isDesignable () должен указать, будет ли свойство отображаться в Qt Designer.
Как указано в документации Qt :
Атрибут DESIGNABLE указывает, должно ли свойство отображаться в редакторе свойств инструмента дизайна GUI (например, Qt Designer).Большинство свойств являются DESIGNABLE (по умолчанию true).Вместо true или false вы можете указать логическую функцию-член.
Также кажется, что свойства только для чтения не отображаются в Designer.
Следуя вашему примеру:
// Print all available properties of a Widget:
qDebug()<<qPrintable("Widget: QPushButton");
QPushButton *object = new QPushButton(this);
const QMetaObject *metaobject = object->metaObject();
for (int i=0; i<metaobject->propertyCount(); ++i) {
QMetaProperty metaproperty = metaobject->property(i);
const char *name = metaproperty.name();
QVariant value = object->property(name);
bool isReadOnly = metaproperty.isReadable() && !metaproperty.isWritable();
bool isWinModal = metaproperty.name() == QString("windowModality"); // removed windowModality manually
if(!isReadOnly && metaproperty.isDesignable(object) && !isWinModal){
qDebug() << metaproperty.name();
}
}
Это печатает:
Widget: QPushButton
objectName
enabled
geometry
sizePolicy
minimumSize
maximumSize
sizeIncrement
baseSize
palette
font
cursor
mouseTracking
tabletTracking
focusPolicy
contextMenuPolicy
acceptDrops
toolTip
toolTipDuration
statusTip
whatsThis
accessibleName
accessibleDescription
layoutDirection
autoFillBackground
styleSheet
locale
inputMethodHints
text
icon
iconSize
shortcut
checkable
autoRepeat
autoExclusive
autoRepeatDelay
autoRepeatInterval
autoDefault
default
flat
Но есть несколько предостережений по этому поводу:
- Видимость свойства в Designer может быть включена или отключена другими свойствами.Например, свойство
checked
доступно для разработки, только если для логического свойства setCheckable
установлено значение true.
Извлечено из определения QAbstractButton:
Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable)
Q_PROPERTY(bool checked READ isChecked WRITE setChecked DESIGNABLE isCheckable NOTIFY toggled USER true)
- Итак, для достижения того, что вы хотите, я исключаю свойства только для чтения и
windowModality
, но это довольно странно,Я не уверен, есть ли лучший способ сделать это.