如何在Qt的Ui_MainWindow中使用自定义类并适配GUI Designer?
解决Qt Designer中使用自定义控件且避免手动修改ui文件被覆盖的问题
别担心手动改ui_mainwindow.h被覆盖的问题,Qt本身就提供了官方的解决办法——控件提升(Promotion),这才是正确的姿势,具体操作步骤如下:
第一步:在Qt Designer中添加基础控件
先把标准的QPlainTextEdit拖到你的主窗口界面上,调整好它的位置、大小等属性,就是你原本要替换成自定义类的那个控件。第二步:启动控件提升功能
右键这个QPlainTextEdit控件,在弹出的菜单里选择 Promote to... 选项,打开提升设置对话框。第三步:配置自定义类信息
在对话框里:- 在「Promoted Class Name」输入框中填写你的自定义类名:
MyCustomQPlainTextEdit - 在「Header File」输入框中填写自定义类的头文件名(比如
mycustomqplaintextedit.h,注意路径要正确,确保编译器能找到) - 点击「Add」按钮,把这个自定义类添加到提升列表里
- 最后点击「Promote」按钮完成提升操作
- 在「Promoted Class Name」输入框中填写你的自定义类名:
第四步:验证效果
现在你去查看自动生成的ui_mainwindow.h文件,会发现原本的QPlainTextEdit *list;已经变成了MyCustomQPlainTextEdit *list;,而且以后你在Designer里修改界面并重新生成代码时,这个设置会被保留,再也不会被覆盖了!
额外提示:如果你的自定义控件需要在Qt Designer里直接看到可视化效果(比如自定义了外观),那你可能需要编写Qt Designer插件,但如果只是替换类、复用自定义的逻辑,上面的提升操作完全足够,不用折腾插件。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

