【问题标题】:Setting up a QMainWindow's corner to belong to a docking widget area (QMainWindow::setCorner) using Qt Designer使用 Qt Designer 将 QMainWindow 的角设置为属于停靠小部件区域 (QMainWindow::setCorner)
【发布时间】:2014-07-18 09:28:16
【问题描述】:

好吧,主题。

我在我的桌面 Qt4 应用程序中使用停靠小部件,但我不喜欢停靠窗体的布局。我希望 right 停靠栏占据 右上角 默认情况下由 top 停靠栏占据。

我已经用谷歌搜索(说真的!)我可以用这个做什么,我发现an article 描述了QMainWindow::setCorner 的使用。这很简单,我最终将以下代码添加到窗口的构造函数中:

this->setCorner(Qt::TopRightCorner,Qt::RightDockWidgetArea);

效果很好,但我的问题来了。

该代码似乎在应用程序的逻辑代码部分描述了 UI,我认为这不是很好。在我的例子中,UI 是使用我使用 Qt Designer 创建的.ui 文件来描述的,因此 UI 事物与应用程序的主要逻辑事物是分开的。

问题是,有没有办法让 Qt 从.ui 文件中生成这样的代码?

第二个原因是 Qt Designer 中的表单看起来与我运行应用程序时得到的不同(当然,这种行为是完全合法且显而易见的)。

如果我不清楚,请告诉我。

谢谢。

【问题讨论】:

  • @Tay2510 它只是......在 Designer 中,右上角被顶部停靠小部件占据,而在运行时它被正确的停靠所占据(这就是我想要的,也是我所拥有的通过致电setCorner获得)。
  • Well Designer 肯定是有限的。如果您知道 Qt 必须提供小部件、布局和大小策略方面的功能,您不妨用 C++ 编写 UI,并通过使用您自己的项目结构将其与逻辑分开,并从中获得一些好处。由设计师做所有事情似乎确实是不可能的。

标签: c++ qt qt4 qt-designer


【解决方案1】:

Qt 在 qmake 工作期间通过 UI 编译器(uic)从 foo.ui(XML 文件格式)生成 C++ 头文件 ui_foo.h。换句话说,最终那些.ui 文件将不可避免地成为你的逻辑代码的一部分,在代码编辑器中与那些UI实例交互是很正常的。

就个人而言,我觉得 Qt Designer 的工作是帮助创建雪纺的基本主体,而将其余的装饰留给 逻辑 代码,这取决于个人喜好,因此您可以添加自己的风味并使其成为好吃的蛋糕。这就是我开始使用 Qt Creator 的原因,它允许我在内置的 UI 设计器和代码编辑器之间来回切换。因此,虽然我喜欢 Qt Designer 简化编程的方式,但我宁愿把它当作支持者。

我们只能说 Qt Deisgner 的能力是有限的。例如,仅由 Qt Designer 制作带有可点击按钮的表格几乎是不可能的:

简而言之,寻找一种方法让 Qt 从.ui 文件生成此类代码是不值得的,因为这取决于 UI 编译器的设计方式。只需编码!

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 2020-06-06
    • 1970-01-01
    • 2023-04-02
    • 2014-10-24
    • 2013-06-06
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多