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

How can I put complex pointer data as property into qt plugin xml file

本文关键字:属性 qt-plugin-xml 文件 复杂 数据 指针      更新时间:2023-10-16

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

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

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

class MyPlugin : public QObject, public QDesignerCustomWidgetInterface
{
    ...
} 
QWidget *MyPlugin::createWidget( QWidget *parent )   
{    
    return new MyWidget(parent);
}

但在QtDesigner属性窗口中,我无法设置像Q_property(MyPointer*PointerData…)这样的复杂数据。一些Qt小部件,如QTreeWidget,可以通过自定义界面在QtDDesigner中设置复杂的指针数据。例如,在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>

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

是否以UI xml形式保存QTreeWidget的子类?你可以使用

void QAbstractFormBuilder::save(QIODevice * device, QWidget * widget) 

void QAbstractFormBuilder类或QFormBuilder类的函数。