问题标签 [qmdiarea]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2369 浏览

c++ - 在 Qt 4.4 中使用 QMDIArea。

我正在使用QMdiAreaQt 4.4 中的。

如果创建了一个新项目,我会在一个QMdiArea. 我想禁止用户在运行时关闭子窗口。只有关闭整个应用程序或创建新项目时,才应关闭子窗口。

我怎样才能做到这一点?

0 投票
5 回答
5362 浏览

c++ - Qt - 删除快捷方式 - 不明确的快捷方式重载

无关信息: 我正在尝试使用 Qt 构建应用程序。此应用程序具有 QMdiArea 和子窗口。我的子窗口将有一个菜单,它可以集成到 QMdiArea 中,也可以隔离并附加到孩子本身。不过,这比需要的要详细一些...

问题: 我希望我的子小部件有一个带有快捷键“CTRL+W”的菜单。但是,因为我使用的是 QMdiArea,所以已经使用了快捷方式,导致:

QAction::eventFilter:不明确的快捷方式重载:Ctrl+W

如何摆脱此快捷方式并在我的子小部件中声明它?

更新: 这是我没有运气的尝试:

如果我做一些简单的事情,比如接收Qt::Key_WQt::Key_L.键组合并引发事件,这将起作用。有了W,它就永远不会发生。我还尝试将eventQMainWindow 以及子窗口中的 eventFilter 移至 QMdiArea。做一些简单的事情,比如从 QMdiArea 中删除默认的密钥处理程序,似乎有点过于复杂。

0 投票
2 回答
2943 浏览

c++ - 如何使 QMdiArea 子窗口小部件不可调整大小?

所以QMdiArea我的代码的非版本,

工作得很好,并产生一个用户无法调整大小的小部件。但是当MainWindow代码被替换为

现在在 中的窗口QMdiArea是可调整大小的。这似乎不是 Qt::WindowFlags 的问题,它们不处理调整大小策略。当然有办法做到这一点?注意我不能使用类似的东西,setFixedSize(ht, wd)因为小部件的大小可以以编程方式更改(添加和删除子小部件)。但是用户不应该能够调整它的大小。

0 投票
1 回答
590 浏览

qt - 在 QMdiArea 中处理多个文档的最佳实践?

我需要设计和开发一种图形软件,可以编辑包含图形元素的自定义文件等。

我希望该软件包含许多文档,QMdiArea这实际上是我在QMainWindow.

对于每个文档,我都需要 aQGraphicsView和 a QGraphicsScene,因为它们一起工作。

现在,我的问题是,我应该QGraphicsView用受保护/私有成员继承它自己的QGraphicsScene,还是应该创建一个继承QWidget和处理QGraphicsView/实例的类QGraphicsScene

还是有什么我没有想到的解决方案?

0 投票
1 回答
1263 浏览

qt - 拒绝 QMdiArea 中的子窗口更改

我有一个带有几个 QMdiSubWindows 的 QMdiArea。在构建时,QMdiArea 被初始化为 TabbedView 和 DocumentMode,所以它默认看起来像一个 QTabWidget。

当用户单击选项卡切换子窗口时,我想添加一个确认,如果用户选择取消,则活动选项卡不会更改。

我的解决方案是处理信号“subWindowActivated”,如果确认失败,则将“setActiveSubWindow”调用回原来的子窗口。

问题是,setActiveSubWindow 调用没有按预期工作。活动窗口切换回原来的窗口,但子窗口不再最大化,而是重叠。而原来的子窗口出现在用户点击的后面。我可以调用 setWindowState 最大化子窗口,并将焦点设置在它上面,但是子窗口仍然在用户单击的后面。

我想知道在用户单击新子窗口后是否有适当的方法切换回原始子窗口。

下面是一些代码片段

0 投票
1 回答
2386 浏览

qt - 如何在不从当前活动选项卡中获取焦点的情况下将子窗口添加到 QMdiArea(设置为 TAB 模式)?

我有一个在后台运行并在QMdiArea. 但是,当添加新选项卡时,它会从当前活动的选项卡中窃取焦点。有没有办法可以添加一个新的非活动选项卡(子窗口),以便将焦点保持在当前使用的选项卡上?

我已经在网上搜索过,但找不到与此问题相关的任何内容。

我尝试了以下方法:

但它没有达到预期的效果。

0 投票
0 回答
3856 浏览

qt - QMdiArea 中子窗口的大小和位置

我有一个我没有设置的QMdiArea对象,但如下所述。QMainWindowsetCentralWidget()

我不想将其设置QMdiArea为中心小部件。现在我在里面创建了一些子窗口QMdiArea,如下

到目前为止,一切都很好。但问题是在子窗口调整大小/关闭事件中我需要保存的大小,HelpWindow并且我正在执行以下操作以在其调整大小/关闭事件中保存子窗口的大小。

好的。问题来了。我从size()子窗口内的函数获得的大小与我在函数中使用的大小不同setGeometry(),即使我在调整大小事件(即关闭事件)以外的其他方法中看到它。

所以,假设第一次创建子窗口的大小(使用 setGeometry)400、200,当我关闭这个窗口时,我将从中获得的大小HelpWindow::size()可能会说(385, 190)我将保存,下一次setGeometry()将从中获得这个大小设置,此时在关闭事件中我会得到更小的尺寸,最终我的子窗口将具有 size (0, 0)

1:关于如何同步这两种尺寸的任何想法(即,如果子小部件由setGeometry()函数设置的大小和我从小部件的size()功能获得的小部件的大小)

2:另一个问题,我在子小部件(HelpWindow)类中接收resizeEvent / closeEvent事件等,但是当我将子窗口移动到里面时我没有收到moveEvent,QMdiArea我收到这个事件的唯一时间是我最大化里面的子窗口QMdiArea(我不会这样做)。所以当它的位置改变时,我需要保存我的子窗口的位置。我该怎么做?

0 投票
0 回答
3626 浏览

c++ - 使用带有 QMdiArea 的自定义标签栏

我看到它QMdiArea有一个选项卡式视图模式。我希望能够用两个QMdiArea小部件拆分主窗口,并能够在每个小部件之间拖放选项卡。我已经用一个简单的方法完成了它QTabWidget,我可以在其中设置自定义标签栏。同时我想切换QMdiArea视图模式,因此使用QTabWidget不是我的选择。但我没有看到任何在QMdiArea. 我仍然希望它可以完成。任何人都可以提出一些建议吗?

Qt 4.8 的测试解决方案(编辑)

经过一段时间的研究,我可以提出以下解决方案。您必须创建一个新类继承QMdiArea. 将其视图模式设置为TabbedView以使标准QTabBarQMdiArea. 然后获取所有孩子并找到QTabBar带有QString(QObject::metaObject()->className()) == "QTabBar". 把它藏起来。TabbedView在模式下,您将在文档上方获得一个空白区域。构建您的自定义标签栏并将其重新设置为您的自定义 mdi 区域。连接子窗口和选项卡激活时触发和使用的信号和插槽。您可以将自定义选项卡栏作为自定义 mdi 区域的类成员。

如果你觉得这篇文章有用,请投票。谢谢。

例如一些代码。

  1. QTabBar在其构造函数的自定义 mdi 区域内寻找标准:

    /li>
  2. 重生:

    /li>
  3. 隐藏:

    /li>
  4. 使用的信号和插槽:QMdiArea::subWindowActivated(QMdiSubWindow*),QTabBar::currentChanged(int)

0 投票
1 回答
455 浏览

qt - 遍历 mdiarea 子窗口

我有一个 mdiArea。每次打开图像时,我都会向此 mdiArea 添加子窗口。我为每个子窗口设置的小部件是继承自 QDialog 的 imageFileDialog。在这个对话框中,我有一个旋转框。我希望能够在创建 mdiArea 后为我在 mdiArea 中的每个对话框设置此旋转框的值。我不知道如何遍历对话框。我试着想办法做到这一点。

但我有一个错误,因为我无法将小部件转换为从 QDialog 继承的 imageFileDialog 类。

我虽然可以在创建 imageFileDialog 时设置连接:

但这不同于我之前尝试建立的任何联系。一切都编译得很好,但是发出的信号没有到达我的插槽。我希望有人以前尝试过这个并有一些建议!提前致谢。

0 投票
0 回答
245 浏览

qt - 基于 QWidget 的类调整大小在 mdi 模式下不起作用

我正在尝试为我的 mdiform 创建一个子窗口。我使用下面的代码:

其中 pygApp 是基于 QWidget 的类:

但结果是: 在此处输入图像描述

如您所见,子窗口无缘无故被最小化。我也使用了 setGeometry,但没有任何改变。我应该怎么办?