c++ Qt Widget和UI表单的最佳实践

6gpjuf90  于 2023-05-02  发布在  其他
关注(0)|答案(1)|浏览(89)

这是我第一次使用Qt,也是我第一次在一个相对严肃的项目中使用它。我明白,由于问题空间的性质,编写Qt代码与编写普通C++有点不同。我相信我已经很好地掌握了信号&插槽和通用库,以及QtCreator。我已经看了很多教程、文档和GitHub项目,但没有明确的答案,至少没有深入研究其中一个项目(这些项目相当大,因此很难质疑代码设计用例),假设它们设计得很好。
我的问题是如何将小部件(大概还有UI表单)模块化到它们自己的文件中;我知道一个ui_mainwindow。h文件从主窗口生成。ui,并包含您可以从MainWindow访问的(全局)小部件对象/变量。cpp,但是我有点不知所措,如何将这些小部件对象放入它们自己的文件和/或类中,从而封装它们。例如:

MainWindow.cpp
MainWindow.h
Button.cpp
Button.hpp
Search.cpp
Search.hpp
ListView.cpp
ListView.hpp

有一个选项是以编程方式创建所有内容,我已经看到项目这样做;相比之下,RPCS 3似乎只为单独的页面/菜单使用新的ui表单。然而,我想保持表示和逻辑分离,但不知道如何去没有一个单一的臃肿的主窗口。cpp文件。

e4eetjau

e4eetjau1#

Qt Widget Designer不适合设计太大的东西。事情只是变得笨拙和令人沮丧,你运行的风险增加了运行到一些错误。设计师的部分是旧的(从90年代可能?)比Qt Creator(2007-〉),基本上是固定的,没有完全集成(例如:在Designer中重命名东西)。
简而言之,就是将应用程序的整个复杂UI设计为单个UI的想法。ui文件与 * 一切 * 在它可能是一个坏主意,并会导致眼泪和头发拉。
因此,您应该创建自包含的可重用小部件。这是一组固定的文件:.cpp、.h和可选地。ui,和 * 可能 * 资源文件(如果你想要非可配置的非共享图形等),和可能的语言文件,如果你真的想让它成为独立的小部件(那么它可能是一个子项目)。* 无论它有。ui文件或纯C++应该是一个隐藏的实现细节,在使用此小部件时不重要。* 如果小部件中有自包含的部件,则它们将成为独立的可重用小部件。
如果你设计了顶层。ui与设计器,然后您可以使用“升级到”使用您的自定义小部件在那里。顶层。UI应该是关于应用程序的顶层布局,而不是关于UI不同部分的确切内容。
每个UI都是不同的,如何将其划分为更小的部分是非常主观的,所以很难给予比经验法则更多的东西。但要记住的主要事情是:

  • 小部件设计器是一个古怪的工具,你需要适应使用它,因为它不会适应你。
  • 经常保存。经常进行版本控制(每次你要做一些可能会造成混乱的事情时)。
  • 保持小规模。分头行动。
  • 注意你使用设计器的方式,并不断学习如何更好地使用它。
  • 对于某些操作,编辑。ui XML文件作为文本是唯一明智的选择,即使它不是一般建议。这是可以的,只要确保你在用手触摸它之前提交一个版本,然后在你用手编辑完它之后用设计器打开、验证和重新保存它。
  • 不要害怕丢掉一些工作,重新做的事情,如果你最终在一个混乱的情况。这通常比收拾残局要快。这就是为什么你要经常提交版本控制的原因。..

相关问题