Использую Qt 5.3.1. Надо сделать свой виджет, который можно подложить Qt Designer'у. Qt для этого использует определенный термин: custom widget plugin. Одно из требований к нему - сделать возможность его настраивать в Designer'e, да еще и определенным образом. Надо сделать несколько групп свойств. Под группами (может быть, есть более корректный термин - говорите, не стесняйтесь) я имею в виду такие вот блоки данных: которые могут содержать bool, string, int и др значения.
Нашел два пути задания свойств.
1) XML
Документация Qt
Выдержка оттуда:
QString AnalogClockPlugin::domXml() const
{
return "<ui language=\"c++\">\n"
" <widget class=\"AnalogClock\" name=\"analogClock\">\n"
" <property name=\"geometry\">\n"
" <rect>\n"
" <x>0</x>\n"
" <y>0</y>\n"
" <width>100</width>\n"
" <height>100</height>\n"
" </rect>\n"
" </property>\n"
" <property name=\"toolTip\" >\n"
" <string>The current time</string>\n"
" </property>\n"
" <property name=\"whatsThis\" >\n"
" <string>The analog clock widget displays the current time.</string>\n"
" </property>\n"
" </widget>\n"
"</ui>\n";
}
Но я не вижу способа связать свойство, которое я туда добавлю с атрибутами или методами виджета. А еще есть проблема с блоками типа "rect" - где описание к ним?
2) Q_PROPERTY
Виджет на Q_PROPERTY
Тут связка с виджетом логична и понятна. Но неизвестно как сделать группу.
class QDESIGNER_WIDGET_EXPORT LED : public QWidget
{
Q_OBJECT
Q_PROPERTY(double diameter READ diameter WRITE setDiameter) // mm
Q_PROPERTY(QColor color READ color WRITE setColor)
Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment)
Q_PROPERTY(bool state READ state WRITE setState)
Q_PROPERTY(bool flashing READ isFlashing WRITE setFlashing)
Q_PROPERTY(int flashRate READ flashRate WRITE setFlashRate)
Я в тупике. Кто-нибудь подскажет?