[PyQt] Re: Add "user" property to a widget

Alberto Berti alberto at metapensiero.it
Wed Sep 10 10:58:22 BST 2008


>>>>> "Arve" == Arve Knudsen <arve.knudsen at gmail.com> writes:

    Arve> I need to have a "user" property for a widget, so it can be
    Arve> fetched via its metaObject().userProperty(). This is
    Arve> required since the convention in Qt is to designate a "user"
    Arve> property of a widget for editing purposes (e.g., text() for
    Arve> QLineEdit). Now that I've explained my use case, how can I
    Arve> can define such a property in PyQt :)

I know only QDataWidgetMapper that looks for the user prop but just
when the property name isn't specified in the binding operation.
However, i think since pyqt 4.4.4, the pyqtproperty decorator has a
parameter for it:

  >>> from PyQt4.QtCore import pyqtProperty
  >>> help(pyqtProperty)
  Help on class pyqtProperty in module PyQt4.QtCore:

  class pyqtProperty(__builtin__.property)
   |  pyqtProperty(type, fget=None, fset=None, freset=None, fdel=None, doc=None
   |               designable=True, scriptable=True, stored=True, user=False)
   |               -> property attribute
   |  
   |  type is the name of a C++ type that be passed to QVariant.nameToType().
   |  freset is a function for resetting an attribute to its default value.
   |  designable sets the DESIGNABLE flag (the default is True for writable
   |  properties and False otherwise).
   |  scriptable sets the SCRIPTABLE flag.
   |  stored sets the STORED flag.
   |  user sets the USER flag.
   |  The other parameters are the same as those required by the standard Python
   |  property type.  Properties defined using pyqtProperty behave as both Python
   |  and Qt properties.



More information about the PyQt mailing list