如何在 QT 设计器中重新绘制小部件

Posted

技术标签:

【中文标题】如何在 QT 设计器中重新绘制小部件【英文标题】:How to repaint a widget in QT designer 【发布时间】:2015-07-23 01:18:15 【问题描述】:

我刚刚开始学习一些 QT 编程,并想先从 QT Creator 的设计器部分开始,然后再深入研究 .cpp 和 .h 文件。我想做一些简单的任务,比如根据条件改变盒子的颜色,或者执行一些算术。但是我读到的所有内容都描述了如何更改代码,而不是在 UI 编辑器中进行。甚至 QT Designer 手册也没有演示如何在 Designer 中创建简单的计算器。他们只显示代码 (http://doc.qt.io/qt-5/designer-using-a-ui-file.html)。我已经从这个页面底部的链接加载了这个项目:http://doc.qt.io/qt-5/qtdesigner-calculatorform-example.html,但我仍然对它是如何通过查看 UI 编辑器进行算术感到困惑。我没有看到任何信号/插槽指示在旋转框中的数字上添加。我也没有在输出 QLabel 的属性中看到任何使它成为 Input1 和 Input2 的总和的东西。

为了给这个简单的例子增加另一个层次,如果满足条件,我怎么能改变输出框的颜色呢?假设输出大于 10,则将框设为蓝色。我在“属性”框中看到了调色板,但如何使其有条件,留在 Creator 应用程序的设计器部分?

谢谢!

【问题讨论】:

【参考方案1】:

您正在寻找一种直接从 qt-designer 中执行简单代码/操作的方法,而不使用任何后面的代码。

这是不可能的,如果您使用 qt-designer 和 .ui 文件。 您可以直接将插槽连接到来自设计器的信号,但您必须在 *.cpp 文件中实现这些插槽。

如果您想将 UI 设计与应用程序逻辑相结合,请查看 QML。

【讨论】:

好的,根据我一直在阅读的所有文档/视频/论坛,这是有道理的。但我也看到 QT 框架被描述为没有编程经验的人可以使用的东西,因为编程可以在 UI 编辑器中完成。如果我要问的是不可能的,为什么还有一个独立的设计师?我应该认为 QT Designer 将能够编辑 QT 应用程序和小部件。 无需编写任何代码即可完成 UI 设计——我想我们同意这一点。但是添加交互并不难。尝试右键单击设计器中的元素并从上下文菜单中选择Go to slot...。您将被带到代码隐藏,您可以在其中访问像 ui->label1->setText("hello world") 这样的用户界面。 好的。我将不再害怕 C++,而是学习它。也感谢 QML 方面的领导。 我仍然对设计师部分如何与 QTCreator 的其余部分一起工作感到困惑。我已经从预定义的插槽建立了一些连接,它们工作得很好。但我没有在我的 .h 或 .cpp 文件中看到它们。更烦人的是,我想编写一个自定义插槽。我想使用我的 .ui 中的东西已经生成的信号,而不必从头开始重新编程。我在这里想念什么?这里的minimal reproducible example (forum.qt.io/topic/800/…) 不适合我。 我不确定我是否想“直接从 qt-designer 中执行简单的代码/操作,而不使用任何背后的代码。”这不是信号/槽编辑器和动作编辑器的帮助吗?

以上是关于如何在 QT 设计器中重新绘制小部件的主要内容,如果未能解决你的问题,请参考以下文章

Qt 设计器和 Dock 小部件

Qt - 重新加载小部件内容

如何在 Qt-Designer 中使用自定义小部件

QT 绘画到小部件

如何使用 Horde3d 和 OpenGL 绘制 Qt 小部件?

如何在 Qt 中的弹出窗口小部件上创建平滑的圆角