最近我开始学习使用 C++ 开发 GUI 应用程序* 的 QT 框架。到目前为止,QT Creator 一切正常,但是当我尝试使用 CSS 样式表更改元素的背景颜色时,QT UI 设计器没有得到更新。此外,即使在编写代码时,QT 也不会检测到我在屏幕上新添加的控件。这是显示此问题的 GIF。
我也不确定这是否是 QT 的工作方式,但在表单上添加一个元素后,我无法立即在代码中通过其对象名称访问该元素,除非我再次构建它
这是我的 QT 详细信息
如果我在某处出错或犯了任何错误,请原谅我,我是 Visual Studio 专家,对使用 QT 还很陌生。
注意:我问的是第二个,因为我看过很多关于 QT 小部件的教程视频,其中添加对象后可以立即在代码中访问它。
也是我第一次使用它时,它确实有效。但从那以后设计师就没有得到更新
最佳答案
这很容易。我只需要将 border 属性更改为任何值,就可以立即看到更改。我猜是因为边界导致了问题。
关于 mainwindow.ui 与 ui_mainwindow.h 文件不匹配的问题,解决方案非常简单,构建目录和工作目录都包含名为 ui_mainwindow.h 的相同文件,删除工作目录中的那个文件,然后它就可以工作了。
感谢这个 QT 论坛的帖子 [Solved] What would cause a mainwindow.ui file not to match with it ui_mainwindow.h file?
注意:每当构建或运行项目时,都会再次生成 ui_*.h 文件,导致您一次又一次地删除这些文件。一个解决方案是在工作目录中添加一个 makefile,它会在构建项目(构建后步骤)后自动删除 ui_*.h 文件。以下是它的步骤。
第 1 步: 创建一个名为 deleteUI_header.mk 的 makefile 并在其中添加以下代码,如下图所示
第 2 步:将文件保存在项目的工作目录中。
第 3 步: 现在在 QT 中打开项目并单击左侧的项目选项卡。在 build settings->build step 下点击 add build step->make
现在用 make 覆盖 jom.exe(确保 make 的位置存在于 PATH 环境变量中)并提供以下 make 参数
-f deleteUI_header.mk
现在,无论何时构建项目,生成的 ui 头文件都会自动删除。 `
关于c++ - UI 未在 QT 设计器中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56052094/