【问题标题】:Is is possible to edit an individual Widget in the QtDesginer?是否可以在 QtDesginer 中编辑单个 Widget?
【发布时间】:2015-07-22 08:49:40
【问题描述】:

我有一个外部库,其中包括一个来自 QGLWidget 的派生类,与 here 非常相似。在那个库中,我有一个类:

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。

有没有办法做到这一点?提前谢谢!

【问题讨论】:

  • 您肯定使用设计器来创建您要添加的小部件
  • @AngryDuck 不,我添加的小部件不是我写的。我得到它是一个 *.dll。
  • 作为 dll 的小部件...我假设您的意思是您使用的库包含一个小部件,这是您在代码中获取的实例然后添加到您的布局中...如果这个是这种情况,那么我不知道您将如何将其导入设计器,我已经使用自己的 lib 东西完成了此操作,但需要在 VS2012 中编译,然后作为 qt 设计器插件导入我假设您使用的 lib 不会编译设计师插件会理解的一种方式:/
  • @Angryduck 确切地说:(当我有源代码时,只有 (*.cpp & *.h) 没有任何 QtDesginer *.ui ,那么我可以在 QtDesigner 中使用它吗?
  • 如果整个 ui 只是用 cpp 和 h 文件的代码创建的,那么我当然不知道如何在设计器中打开,我的直觉是它无法完成,但不要拿我的工作去做,为什么不只是在代码中编辑它?

标签: qt qt5 qwidget qt5.4 qlayout


【解决方案1】:

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

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

  2. 右键单击小部件,选择“提升为...”。

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

  4. 将您的小部件升级为PictureGLWidget

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

如果您想在设计器中使用PictureGLWidget 而不是虚拟小部件,您可以编写一个设计器插件,将小部件包装并在小部件托盘中公开,提供属性支持等。

【讨论】:

    【解决方案2】:

    我可能误解了您的问题,但您不只是在 Designer 中将 QGLWidget 添加到您的设计中。右键单击小部件并选择提升到...?

    【讨论】:

    • 我认为他想编辑所述小部件的内容。推广不允许这样做
    • 从代码示例看来,他只想在布局中获取小部件,而提升的 QGLWidget 肯定会允许这样做...
    • 我同意你的观点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多