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

Posted

技术标签:

【中文标题】是否可以在 QtDesginer 中编辑单个 Widget?【英文标题】:Is is possible to edit an individual Widget in the QtDesginer? 【发布时间】: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 文件的代码创建的,那么我当然不知道如何在设计器中打开,我的直觉是它无法完成,但不要拿我的工作去做,为什么不只是在代码中编辑它? 【参考方案1】:

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

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

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

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

    将您的小部件升级为PictureGLWidget

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

我认为他想编辑所述小部件的内容。推广不允许这样做 从代码示例看来,他只想在布局中获取小部件,而提升的 QGLWidget 肯定会允许这样做... 我同意你的观点。

以上是关于是否可以在 QtDesginer 中编辑单个 Widget?的主要内容,如果未能解决你的问题,请参考以下文章

如何恢复dojo dgrid中的单个编辑行?

是否可以从非通用应用程序使用 Wi-Fi Direct?

在没有互联网的本地 Wi-Fi 网络中是不是可以进行 Web 通知?

Vuejs - 如何使用单个表单添加和编辑

Wi-Fi 直连技术

Android:与联网设备建立“Wi-Fi Direct”连接