【发布时间】:2012-05-27 04:32:28
【问题描述】:
使用 Pyside,但一般 Qt 问题:
我正在构建一个带有控制 QMainWindow 的 Qt 应用程序。从这个窗口,用户可以打开其他 QMainWindows(或 QDialogs),并从其中一些她可以打开更多。用户打算将第一个 QMainWindow 视为“应用程序”,而将其他 QMainWindow 视为对或多或少相同数据的许多不同视图。
所以我希望所有窗口都可以独立堆叠,以便用户可以根据自己的要求设置屏幕。特别是,如果需要,我希望用户能够将第一个 QMainWindow 置于顶部。但是我真的不希望每个窗口都有自己的任务栏条目(尽管我可以忍受)。我还希望它们一起最小化和恢复,并且我希望它们在第一个主窗口关闭时全部关闭。
如果我将它们全部放在第一个主窗口上,它会很好地工作,但它们会留在上面,这不是我想要的。
相反,我通过使它们都独立于 parent = None 来使其工作。然后我将它们全部注册到主窗口并在它关闭时将它们全部关闭。但这让它们有点过于独立了——它们分别最小化并有自己的任务栏条目。
我是否错过了一些明显的解决方法?有没有什么简单的方法(旗帜?)来阻止孩子站在父母之上?
或者是否有一些 UI 准则是我想要这样做而违反的?
或者有什么更简洁的设计吗?我想添加一个他们都可以继承的虚拟父母,但也许这很混乱。那位父母需要视觉上的存在吗?我不想那样。
建议?
【问题讨论】:
-
在单个 QMainWindow 中的选项卡不是更好的 UI 设计吗? (我只是想给你一个替代的想法。)
-
谢谢 - 这就是我正在寻找的想法。但这不适合我,因为用户需要同时查看多个窗口:例如,他们获取不同缩放比例的地图以及要一起查看的表格......
-
好的,这个折衷方案怎么样:主窗口内的选项卡+“在外部窗口中打开选项卡”的选项。这个窗口可以是一个没有菜单和状态栏的简单 QWidget。所以用户知道这是一个外部视图。不会有像“应用程序的主窗口又是什么?”这样的困惑。因为如果您的所有主窗口看起来都一样,但其中一个是真正的主窗口,那将是一个问题。 (同样,只是一个想法。)
-
我可以试试。虽然如果 QWidget(我想我会使用 QDialog)坚持位于 MainWindow 之上,我仍然会遇到同样的问题。
-
再想一想 - 这可能没问题。 QMainWindow 甚至可以有自己的内容作为选项卡。因此,一旦拖出,所有选项卡只需要位于空选项卡框架的顶部即可。我会试试看的。
标签: qt window parent-child