[Qgis-developer] R: Re: Access to the value in a Relation reference wiget

Enrico Fiore enricofiore at libero.it
Wed Apr 8 01:49:58 PDT 2015


Hi, 
thanks for the answer. I did other tests But without success. 

I tried this code:

   def formOpen(dialog, layerid, featureid):
       widg = dialog.findChild(QgsRelationReferenceWidget, 'fk_via_cod');

       msgBox = QMessageBox()
       msgBox.setText(str(widg))
       msgBox.exec_()

And the message box returns None as widget type

Then I tried this:

   def formOpen(dialog, layerid, featureid):
      widg = dialog.findChild(QgsRelationReferenceWidget(), 'fk_via_cod');

      msgBox = QMessageBox()
      msgBox.setText(str(widg.foregeinKey()))
      msgBox.exec_()

it returns:
TypeError: QgsRelationReferenceWidget(QWidget): not enough arguments


Then I tried to specified the widget as QWidget o QComboBox:

  def formOpen(dialog, layerid, featureid):
      widg = dialog.findChild(QgsRelationReferenceWidget(QWidget), 
'fk_via_cod');

      msgBox = QMessageBox()
      msgBox.setText(str(widg.foregeinKey()))
      msgBox.exec_()

It returns:
TypeError: QgsRelationReferenceWidget(QWidget): argument 1 has unexpected type 
'PyQt4.QtCore.pyqtWrapperType'


So I tried to use QgsRelationReferenceWidgetWrapper() instead of  
QgsRelationReferenceWidget():

def formOpen(dialog, layerid, featureid):
    widg = dialog.findChild(QgsRelationReferenceWidget(QWidget), 
'fk_via_cod');

    msgBox = QMessageBox()
    msgBox.setText(str(widg.foregeinKey()))
    msgBox.exec_()

It returns:
TypeError: QgsRelationReferenceWidgetWrapper(QgsVectorLayer, int, QWidget, 
QgsMapCanvas, QgsMessageBar, QWidget parent=None): argument 1 has unexpected 
type 'PyQt4.QtCore.pyqtWrapperType'


I don't understand how get the widget type. Where is the mistake?

If I change the edit widget properties for the field in "relation value" 
instead of "Relation Reference", so I can use this code to recover the foregien 
key:

def formOpen(dialog, layerid, featureid):
    widg = dialog.findChild(QCombobox, 'fk_via_cod');

    msgBox = QMessageBox()
    msgBox.setText(str(widg.itemData(widg.currentIndex())))
    msgBox.exec_()


Regards

Enrico Fiore

----Messaggio originale----
Da: matthias at opengis.ch
Data: 07/04/2015 17.52
A: <qgis-developer at lists.osgeo.org>
Ogg: Re: [Qgis-developer] Access to the value in a Relation reference wiget

 You try get a QgsRelationReferenceWidget (in qgis.gui) (not sure though if 
specifying this explicitly makes any difference in python though, it should 
determine the real type anyway).
 
 The methods you are looking for are then
 
 setForeignKey()
http://qgis.org/api/classQgsRelationReferenceWidget.
html#a2e9fb74545d2bb4b697a88ca4e434600
 
 and
 
 foreignKey()
http://qgis.org/api/classQgsRelationReferenceWidget.
html#af1765af438f3dd4e642334a338a03ca4
 
 Best,
 Matthias
 
 On 04/07/2015 10:47 AM, Enrico Fiore wrote:
  Hi,
 I am trying to acces to the value stored in a field defined as Relation 
Reference widget, I tried this code:
 
     dialog.findChild(QWidget,"fk_via_cod")
 
 so I access to the object but not to the value.
 
 I need to do something like this
      nameFieldDir = dialog.findChild(QLineEdit,"cod_direzione")
 
 How I can perform this?
 
 Regards
 
 Enrico Fiore
 
 
 
 
 
  
 _______________________________________________Qgis-developer mailing 
listQgis-developer at lists.osgeo.orghttp://lists.osgeo.org/mailman/listinfo/qgis-
developer
  
 




More information about the Qgis-developer mailing list