PyQt4 designer custom properties - combo box style

David Boddie david at boddie.org.uk
Sat Feb 6 15:52:20 EST 2010


On Saturday 06 February 2010 10:32, Andrew wrote:

> I'm attempting to create a drop down property for a custom widget I'm
> creating. So when in designer and you scroll down to the custom
> properties, under the regular widget properties, one of them would be
> a drop down menu. The data to populate it will be coming from our API
> and currently is a list of string-items. Yes, it would be treated
> specially by Designer, since it's the only place it would be seen.

Right. The drop down menus in the property editor usually contain values
defined for C++ enums which have been declared to Qt's meta-object system
when a C++ library or plugin is compiled. I'm not sure that PyQt can expose
lists of Python values in the same way.

An example of this is the alignment property in QLineEdit.

> In the PyQt4\examples\designer folder, it carries a number of custom
> widgets that will load into designer. The datetimeedit widget creates
> a custom drop down menu property. The plugin pulls its information
> from the QtCore libraries and from the QCalander Widget. Though I am
> unable to find a better example or even explanation of how it's
> actually creating that drop down menu.

Each of the individual properties are just single values, aren't they, not
collections of values?

>> Have you seen this article?
>>
>> http://qt.nokia.com/doc/qq/qq26-pyqtdesigner.html
> 
> No, I haven't, thanks. That might step in the right direction. I can't
> run it right now, so I'm not sure if it is putting a spinbox as it's
> property or just the value from the spin box.

The value from each spin box is turned into a property, so there are
latitude and longitude properties, though each of these only holds
a double precision floating point number. It sounds like you want to be
able to select from a list of values, or possibly change the values
themselves.

If it turns out you can't add a property to Qt Designer in the way you want,
you can still add a custom editor to the widget so that users can open a
context menu and select an item to configure it. This is similar to the way
you can open a dialog to edit the text inside QTextEdit widgets.

The article I referred to also covers this:

  http://qt.nokia.com/doc/qq/qq26-pyqtdesigner.html#makingamenu

David



More information about the Python-list mailing list