是否可以在 QtDesginer 中编辑单个 Widget?

Is is possible to edit an individual Widget in the QtDesginer?

我得到了一个外部库,其中包含一个派生自 QGLWidget 的 class,与那个 非常相似。在那个图书馆我有一个 class:

class PictureGLWidget : public QGLWidget { //.. }

这扩展了 Qt 的本机 QGLWidget 并对其进行了个性化设置。但它不是我写的,我只是通过 *.dll 得到它。那么,我在我的代码中手动将该小部件绑定到如下布局:

QGridLayout* layout = new QGridLayout;
layout->addWidget(myPictureGLWidget, 0, 1);
ui->verticalLayout_5->addLayout(layout);

因为我用集成的 QtDesigner 设计了我的 MainWindowWidget,顺便说一句,这非常舒服,我想也在 QtDesigner 中处理我的 myPictureGLWidget,因为我目前正在重新设计 MainWindow。

有办法吗?提前谢谢!

我可能误解了你的问题,但你不只是在 Designer 的设计中添加了一个 QGLWidget 吗?右键单击小部件并 select 提升为... ?

Qt Designer 支持任何外部小部件 class 而无需为此提供插件。您只需接受小部件的属性和外观在 Designer 中不可用。

  1. 在布局中插入一个虚拟对象 QWidget

  2. 右键单击小部件,select "Promote to..."。

  3. 添加 PictureGLWidget 作为从 QWidget 提升的新 class。指定合适的头文件等

  4. 将您的小部件提升至 PictureGLWidget

完成后,uic 生成的代码将在您需要的地方实例化一个 PictureGLWidget,而不是虚拟的 QWidget

如果您想在设计器中使用 PictureGLWidget 而不是虚拟小部件,您可以编写一个设计器插件来包装小部件并将其暴露在小部件调色板中,提供 属性 支持等