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?
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