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

Posted

技术标签:

【中文标题】如何将复杂的指针数据作为属性放入 qt 插件 xml 文件中【英文标题】:How can I put complex pointer data as property into qt plugin xml file 【发布时间】:2013-12-08 13:11:48 【问题描述】:

我在 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 ...) 这样的复杂数据。一些像 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>

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

【问题讨论】:

【参考方案1】:

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

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

void QAbstractFormBuilder 类或 QFormBuilder 类的函数。

【讨论】:

以上是关于如何将复杂的指针数据作为属性放入 qt 插件 xml 文件中的主要内容,如果未能解决你的问题,请参考以下文章

如何将复杂的 JSON 字符串放入 SQL Server 列中

如何在 Android 上部署 Qt imageformats 插件

如何定义和添加枚举作为类型

如何调用具有双指针作为参数的内核?

从 Qt QMediaPlayer 获取流数据

如何使用Qt插件在Qt中进行ROS开发