Ich habe Probleme, Flags als QT benutzerdefinierte Widget-Eigenschaft Typ zu verwenden. Die erwartete Eigenschaft wird im QT Designer-Eigenschaftseditor nicht angezeigt.Wie verwendet man Flags als benutzerdefinierten Widget-Eigenschaftstyp in QT?
ist der Code wie folgt:
#ifndef SVBASICDEMO_H
#define SVBASICDEMO_H
#include <QString>
#include <QtUiPlugin/QDesignerExportWidget>
#include <QWidget>
#include <QLabel>
#include "svbasicwidget.h"
QT_BEGIN_NAMESPACE
namespace Company {
namespace Product {
namespace Widget {
namespace Basic {
class QDESIGNER_WIDGET_EXPORT SvBasicDemo : public SvBasicWidget
{
Q_OBJECT
Q_FLAGS(SvBasicDemo::AccessTypes)
Q_PROPERTY(QString url_prop MEMBER url_prop NOTIFY propertyChange)
Q_PROPERTY(Priority enum_prop MEMBER enum_prop NOTIFY propertyChange)
Q_PROPERTY(AccessTypes flag_prop MEMBER flag_prop NOTIFY propertyChange)
Q_PROPERTY(Qt::Alignment flag_prop_2 MEMBER flag_prop_2 NOTIFY propertyChange)
Q_SIGNALS:
void propertyChange();
public slots:
//更新属性的槽
void updateProperty();
public:
SvBasicDemo(QWidget *parent = 0);
virtual void refresh_binding_cb();
virtual QString help_info() const;
enum Priority { High, Low, VeryHigh, VeryLow };
Q_ENUM(Priority)
enum AccessType { Read = 0x1, Write = 0x2 };
Q_DECLARE_FLAGS(AccessTypes, AccessType)
private:
QString url_prop;
Priority enum_prop;
AccessTypes flag_prop;
Qt::Alignment flag_prop_2;
QLabel label;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(SvBasicDemo::AccessTypes)
}
}
}
}
QT_END_NAMESPACE
#endif
Das Ergebnis in qt Designer Eigenschaftseditor ist wie folgt:
Sie Eigenschaft enum_prop (Verwendung benutzerdefinierte Enum) sehen und flag_prop_2 (Einsatz gebaut in Flag Qt :: Alignment) funktioniert wie erwartet. Aber die Eigenschaft flag_prop fehlt.
Ich habe den Code in "% QT_ROOT% \ Qt5.6.0 \ 5.6 \ msvc2013 \ include \ QtWidgets \ qgraphicsview.h" studiert und nicht herausgefunden, warum.
Kann mir jemand einen Hinweis geben, warum es nicht wie erwartet funktioniert? Danke im Voraus.
könnte sein, dass Sie die zugrunde liegende Enum zum Metaobjektmodell auszusetzen haben. Versuchen Sie, 'Q_ENUM (AccessType)' –
@king_nak immer noch nicht arbeiten – ricky