问题标签 [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 回答
328 浏览

python - 当我最小化 QMdiSubWindow 时,嵌套在 QMdiSubWindow 段中的 FigureCanvasQTAgg

我正在尝试在 QMdiSubWindow 中使用 FigureCanvasQTAgg,以便用户可以即时创建他/她自己的绘图。我制作了这个非常小的自包含代码:

当我运行程序并尝试最小化 QtGui.QMdiSubWindow 对象时会出现问题。当我这样做时,程序会出现段错误并退出而没有错误描述。这可能是 qt、python 绑定或 FigureCanvasQTAgg 对象中的错误。当然也可能是我错误地使用了这些对象。请帮助我理解为什么当我最小化子窗口时会发生段错误并帮助我弄清楚如何解决这个问题。谢谢你。

我的环境是 ubuntu 14.04 并使用 Qt 版本:4.8.7 SIP 版本:4.16.9 PyQt 版本:4.11.4 MatplotLib 版本:1.5.0

这是拖放属性集的示例。这似乎也有问题。

0 投票
1 回答
1352 浏览

c++ - QMdiArea 子窗口中的 QDockWidget 不能停靠在顶部和底部

在我当前的项目中,我实现了一个 Qt 应用程序,其中包含多个 MDI 表单,其中包含多个QDockWidgets.

该应用程序大致如下所示:

我的应用程序的蓝图

这是代码片段:

我对程序的行为方式和功能感到非常满意。但是有一个缺点:即使我能够将停靠小部件停靠在左侧和右侧,我也无法将它们停靠在顶部和底部。

希望这里有人可以帮助我。我真的需要这个功能。

0 投票
1 回答
1328 浏览

pyqt - 将 PyQt4 QWorkspace 移植到 PyQt5 QMdiArea -- subWindowList 方法

我在将“使用 Python 和 Qt 的快速 GUI 编程”中的程序示例从 PyQt4 移植到 PyQt5 时遇到了麻烦。示例程序演示了一个 MDI 应用程序,可以通过该应用程序在主窗口中运行多个文本编辑窗口。

我使用 python 3.4.4 和 PyQt 4.8.7 作为 PyQt4 版本。我使用 python 3.4.4 和 PyQt 5.5.1 作为 PyQt5 版本。

我首先将原始 PyQt4 程序中的所有旧式信号定义更改为新式信号。在 PyQt 4.5 中实现了新样式的信号,因此我能够通过这些更改运行原始程序。将所有旧式信号更新为新式信号后,应用程序成功运行。

原程序使用 PyQt4.QtGui.QWidget.QWorkspace 类来实现 MDI 工作区。QWorkspace 被 PyQt4.3 中的 PyQt5.QtWidgets.QMdiArea 类取代。我的问题出现在尝试修改原始代码以使用 QMdiArea 时。

每个文本文档都使用自定义 TextEdit 小部件(QTextEdit 的子类)的一个实例来呈现和编辑。

MDI应用的最小PyQt5版本——texteditor.py

问题出现在 fileOpen() 方法中:

PyQt4 fileOpen() 方法

PyQt5 fileOpen() 方法

windowList() 在 PyQt5 中实现为 subWindowList()。问题是在 PyQt4 版本中,for textEdit in self.mdi.windowList():执行 textEdit 的时间是 TextEdit 类型,所以下一行

if textEdit.filename == filename

工作,因为 TextEdit 确实有一个文件名参数。而 textEdit 是一个 {TextEdit}textedit.TextEdit 对象,但是在 PyQt5 版本中,在for textEdit in self.mdi.subWindowList():执行之后,textEdit 的类型是 QMdiSubWindow 所以,当然回溯会生成:

真正让我困惑的是 PyQt4 版本中的 textEdit 是如何变成 TextEdit 类型的。我认为这将是一个 str 类型。

0 投票
0 回答
145 浏览

python - 从另一个文件创建 mdiArea 子窗口

我在位于主窗口类中的 mdiArea 内创建子窗口(应在不同的 Python 文件中创建)时遇到问题。

我的应用程序.py

诊断中心模块.py

我指望你的帮助的人来帮助我解决这个问题。提前非常感谢。

0 投票
1 回答
244 浏览

python - PyQt5信号通讯错误

对于我遇到的以下问题,我需要您的帮助。我有两个 Python 文件 Main.py 和 Module.py,它们需要使用 PyQt5 信号进行通信。这是代码:

主文件

模块.py

任何形式的帮助都非常受欢迎。提前致谢。

0 投票
1 回答
704 浏览

qt - 在发生之前拦截小部件移动/调整大小

我正在使用QMdiSubWindow,我想捕获任何试图修改窗口大小/形状/位置的输入,并过滤/修改结果位置和大小,以便小部件与网格对齐。

QResizeEvent似乎为时已晚,即窗口已经调整大小,布局已经计算出来,并且通常已经安排了小部件的完整重绘。

resizeEvent并且eventFilter两者都只允许我了解刚刚发生的调整大小并在不希望更改时“撤消”它,这对我来说是一个巨大的性能问题(嵌入式设备,缓慢的图形)。

我目前正在捕捉QMouseEvents 并修改报告的光标位置,但这很混乱,并没有捕捉到窗口几何形状发生变化的所有情况。

0 投票
1 回答
917 浏览

python - GUI MDI 子窗口仅在第一次按下按钮时显示

我希望我在这里有一个简单的问题。我用 QT Designer 和 MDI 区域的子窗口创建了一个非常大的 GUI。我使用 pyuic5 将其从.ui文件转换为.py文件。我编写了一个函数来在按下按钮时打开该子窗口。我第一次按下按钮时它工作正常。我遇到的问题是第二次按下按钮时,它只会在 MDI 区域内显示一个空白子窗口。每次按下按钮时如何让它正确显示。我将附上如何启动下面的子窗口的代码。任何建议将不胜感激。感谢您的时间和帮助

单击按钮时调用的代码

第一次点击按钮 第一次点击按钮

第二次点击按钮 第二次点击按钮

0 投票
1 回答
275 浏览

c++ - QTabwidget中QMdiSubWindow动态实现到QMdiArea中

有我的问题,我想在tabwidget的活动选项卡的mdiArea中实现新的子窗口。但是你今天唯一能做的就是在最后创建的选项卡/mdiArea 中添加一个小部件(我的代码如下)。

如何动态切换(无需单独声明每个 mdiArea)并填充当前 tabwidget 的 mdiArea ?

PS:我试图替换:

经过

没有成功。

0 投票
0 回答
285 浏览

qt - Qt主窗口不重绘MDI区域

我有一个应用程序,它的主窗口带有一个使用整个窗口的 MDI 区域。打开应用程序时,它没有最大化。如果我打开子窗口然后关闭它,窗口的幽灵仍然显示。如果我打开另一个子窗口,然后将其移过 MDI 区域,那么您只会在幽灵所在的区域中获得一个相互重叠的窗口副本。
如果我打开主窗口,然后最大化它,打开子窗口并最大化它,这个问题就消失了。然后a可以将主窗口恢复到原始大小,打开和关闭子窗口,移动它们并正确重绘背景。
有什么办法可以解决这种行为吗?调用 mdi 窗口:

以及子窗口的初始部分:

显示相同行为的测试程序:
主窗口:

主窗口.cpp

子窗口.h

子windw.cpp

主文件

主窗口的用户界面只有一个 MDI 区域和一个菜单,其中包含一个调用子窗口的项目。子窗口是一个没有任何内容的小部件。

0 投票
1 回答
1184 浏览

python - 如何获取 MDI 区域子窗口的 objectName?

我试过了

但是他们都没有给我我设置的对象名称:

有什么建议吗?非常感谢。附上完整的测试代码:

这是一个非常简单的示例,其中 objectName() 不适用于子窗口,但它适用于按钮和父 MDIarea,如果我有多个具有不同对象的子窗口,我的目标是在这种情况下获取活动子窗口对象名称,例如 subwindow_test_the_object_name名称,我可以抓住这个对象名称作为信号。谢谢。