【问题标题】:Multiple QMainWindow instances?多个 QMainWindow 实例?
【发布时间】:2010-09-24 00:51:17
【问题描述】:

QMainWindow 是 Qt 应用程序中的主窗口。所以通常你只有一个,但你的应用程序中是否有可能有多个QMainWindow 实例?

我正在将一个基于 Qt 的 GUI 应用程序 B 集成到另一个基于 Qt 的 GUI 应用程序 A。这两个应用程序都有一个QMainWindow,我正在考虑作为第一步创建一个新的QMainWindow,它在标签上都有旧的QMainWindows。这样一来,我就可以专注于将 GUI B 的后端连接到 A 的后端,而无需更改用户界面本身的任何内容。这是一种可行的方法,还是您有其他建议?

【问题讨论】:

  • 我的情况非常相似,我需要 2 个 QMainWindows。如果您走这条路,您是否对@caleb-huit-cjhuit 指出的警告有答案,那就是 Mac 上的菜单栏会发生什么?

标签: c++ qt qmainwindow


【解决方案1】:

您可以拥有任意数量的QMainWindow 实例。 QMainWindow 只是一个QWidget,它提供了一个菜单栏、工具栏、状态栏和停靠框架。但基本上它只是一个QWidget,所以你可以拥有任意数量的。

出于 GUI 设计的原因,通常您只有一个 QMainWindow,因为拥有多个主窗口可能会造成混淆。但是,当实现像QtAssistant 这样可以打开自己的新实例的应用程序时,一个进程就会有多个主窗口。

您的建议应该可行。带有选项卡的窗口不必是QMainWindow,除非您还想在该窗口中添加工具栏。

【讨论】:

  • 我要补充的唯一警告是,如果您要移植到 OS X,菜单可能会有点时髦。他们有一些特殊的处理可以让菜单在屏幕顶部工作,而且我不知道如何在一个实际窗口中使用两个主窗口。
  • 鉴于您可以在应用程序中有多个 QMainWindow,您可以在 Mdi 子窗口中使用它的停靠框架吗?这是一个好习惯吗?
  • @Anonymous:好主意!
  • 这个子 QMainWindow(s) 如何出现在主应用程序窗口中?它们是如何排列的:像 MDI 窗口一样,相互重叠或需要将它们放置在一些容器中,如选项卡小部件或堆叠小部件,或者它们是独立的 - 如何?附:在这里找到答案:stackoverflow.com/a/11860378/630169 和这里forum.qt.io/topic/31841/…,需要使用 window->setWindowFlags(Qt::Widget);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多