如何将复杂的指针数据作为属性放入qt plugin xml文件中

Sia*_*ami 5 c++ plugins qt qwidget

我在Qt中实现了一个小部件,如下所示:

class MyWidget : public QWidget
{
    Q_OBJECT
    Q_PROPERTY( bool BooVal READ getBoolVal WRITE setBoolVal)
    Q_PROPERTY( MyPointer* PointerData READ getPointer WRITE setPointer);

    ...
}
Run Code Online (Sandbox Code Playgroud)

我想在QtDesinger中使用它.因此我实现了QDesignerCustomWidgetInterface接口,如下所示:

class MyPlugin : public QObject, public QDesignerCustomWidgetInterface
{

    ...
} 

QWidget *MyPlugin::createWidget( QWidget *parent )   
{    
    return new MyWidget(parent);
}
Run Code Online (Sandbox Code Playgroud)

但是在QtDesigner属性窗口中,我无法像Q_PROPERTY(MyPointer*PointerData ...)那样设置复杂数据.像QTreeWidget这样的Qt小部件可以通过自定义界面在QtDesigner中设置复杂的指针数据.例如,当我设置父节点及其子节点时,在QTreeWidget中,如下所示,出现在.ui文件中

<widget class="QTreeWidget" name="treeWidget">
  <item>
    <property name="text">
       <string>1</string>
    </property>
    <item>
       <property name="text">
           <string>1-1</string>
       </property>
    </item>
  </item>
</widget>
Run Code Online (Sandbox Code Playgroud)

实际上我想创建一个像QTreeWidget这样的插件,并通过QtDesinger设置像QTreeWidgetItem*这样的复杂数据.

has*_*dar 1

你想以 UI xml 形式保存 QTreeWidget 的子类吗?您可以使用

void QAbstractFormBuilder::save(QIODevice * device, QWidget * widget) 
Run Code Online (Sandbox Code Playgroud)

void QAbstractFormBuilder 类或 QFormBuilder 类的函数。