在 qt 设计器中所做的更改对应的代码在哪里?

Posted

技术标签:

【中文标题】在 qt 设计器中所做的更改对应的代码在哪里?【英文标题】:Where is the code correspoding to the changes made in qt designer located? 【发布时间】:2014-05-07 06:43:55 【问题描述】:

我正在使用: Qt 5.2.1、Qt Creator 3.2.1

使用 qt creator 中的设计器模式,我创建了两个小部件: 1.水平滑块 2. 旋转框

然后使用 Signal and Slots 编辑器,我执行了以下操作: 1.发件人:水平滑块 2.信号:值改变 3. 接收器:spinBox 4. 槽位:setValue

然后我构建并运行了该项目,它按我预期的方式运行。 但是在 qt 在左窗格中显示的文件中,这两个小部件没有对应的代码,尽管这些小部件在项目运行时工作正常。

我创建的小部件和信号槽对应的代码在哪里?

【问题讨论】:

【参考方案1】:

通常在您的项目旁边有一个构建文件夹,其中包含自动生成的文件。

例如,对于名称为MyForm.ui 的表单,它使ui_MyForm.h 具有与信号/插槽对应的connect 命令。

【讨论】:

当我使用设计器时,它只是将代码附加到 .ui 文件中,并且不能直接从 qt creator 工作区编辑(为此必须使用设计器模式)。另一种方法是在主 cpp 文件中手动写下代码。哪个是首选方法 - 使用 qt 设计器或自己编写代码?如果必须混合,我应该用什么比例做每件事? 我更喜欢在我的 cpp 文件中编写所有信号/插槽,以便更好地控制并避免依赖代码生成器。 谢谢,所以一个很好的组合是使用设计器添加小部件,然后在 cpp 文件中手动使用连接命令来控制它们的行为,同时在自动中拥有小部件的所有属性生成的文件? 是的,我在我的项目中使用这种方式没有任何问题。【参考方案2】:

编译器从表单生成代码。在我的例子中,我的表单名为dialog.ui,生成的文件名为ui_dialog.h。您可以在编译器构建代码的ui 文件夹中找到它。取决于您是否使用影子构建,这将是一个不同的地方。

【讨论】:

当我使用设计器时,它只是将代码附加到 .ui 文件中,并且不能直接从 qt creator 工作区编辑(为此必须使用设计器模式)。另一种方法是在主 cpp 文件中手动写下代码。哪个是首选方法 - 使用 qt 设计器或自己编写代码?如果必须混合,我应该用什么比例做每件事? 它们实际上是两个不同的东西。您永远不需要担心表单生成的代码,您只需使用它在应用程序代码中提供的项目。例如,您将 ListView 添加到表单,然后编写 C++ 代码来创建模型并将其附加到 ListView。您唯一需要知道的是您将 ListView 命名为什么。没有真正的目标比例,只需使用最适合工作的工具即可。 好的,谢谢。所以我应该只使用设计器添加小部件,其所有属性都由自动生成的代码处理,而连接命令应该在手动添加的 cpp 文件中以确定小部件的行为?

以上是关于在 qt 设计器中所做的更改对应的代码在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

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

在 psql shell 中所做的更改不会显示在 Datagrip 会话中

QT 设计器中的布局

Yii2 验收测试。在每次测试后回滚在验收测试中所做的所有更改

如何还原某些用户在 GIT 存储库中所做的更改

使用 QT 设计器创建的新插槽的代码在哪里?