问题标签 [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.
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
这是拖放属性集的示例。这似乎也有问题。
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 类型。
python - 从另一个文件创建 mdiArea 子窗口
我在位于主窗口类中的 mdiArea 内创建子窗口(应在不同的 Python 文件中创建)时遇到问题。
我的应用程序.py
诊断中心模块.py
我指望你的帮助的人来帮助我解决这个问题。提前非常感谢。
python - PyQt5信号通讯错误
对于我遇到的以下问题,我需要您的帮助。我有两个 Python 文件 Main.py 和 Module.py,它们需要使用 PyQt5 信号进行通信。这是代码:
主文件
模块.py
任何形式的帮助都非常受欢迎。提前致谢。
qt - 在发生之前拦截小部件移动/调整大小
我正在使用QMdiSubWindow
,我想捕获任何试图修改窗口大小/形状/位置的输入,并过滤/修改结果位置和大小,以便小部件与网格对齐。
QResizeEvent
似乎为时已晚,即窗口已经调整大小,布局已经计算出来,并且通常已经安排了小部件的完整重绘。
resizeEvent
并且eventFilter
两者都只允许我了解刚刚发生的调整大小并在不希望更改时“撤消”它,这对我来说是一个巨大的性能问题(嵌入式设备,缓慢的图形)。
我目前正在捕捉QMouseEvent
s 并修改报告的光标位置,但这很混乱,并没有捕捉到窗口几何形状发生变化的所有情况。
c++ - QTabwidget中QMdiSubWindow动态实现到QMdiArea中
有我的问题,我想在tabwidget的活动选项卡的mdiArea中实现新的子窗口。但是你今天唯一能做的就是在最后创建的选项卡/mdiArea 中添加一个小部件(我的代码如下)。
如何动态切换(无需单独声明每个 mdiArea)并填充当前 tabwidget 的 mdiArea ?
PS:我试图替换:
经过
没有成功。
qt - Qt主窗口不重绘MDI区域
我有一个应用程序,它的主窗口带有一个使用整个窗口的 MDI 区域。打开应用程序时,它没有最大化。如果我打开子窗口然后关闭它,窗口的幽灵仍然显示。如果我打开另一个子窗口,然后将其移过 MDI 区域,那么您只会在幽灵所在的区域中获得一个相互重叠的窗口副本。
如果我打开主窗口,然后最大化它,打开子窗口并最大化它,这个问题就消失了。然后a可以将主窗口恢复到原始大小,打开和关闭子窗口,移动它们并正确重绘背景。
有什么办法可以解决这种行为吗?调用 mdi 窗口:
以及子窗口的初始部分:
显示相同行为的测试程序:
主窗口:
主窗口.cpp
子窗口.h
子windw.cpp
主文件
主窗口的用户界面只有一个 MDI 区域和一个菜单,其中包含一个调用子窗口的项目。子窗口是一个没有任何内容的小部件。
python - 如何获取 MDI 区域子窗口的 objectName?
我试过了
但是他们都没有给我我设置的对象名称:
有什么建议吗?非常感谢。附上完整的测试代码:
这是一个非常简单的示例,其中 objectName() 不适用于子窗口,但它适用于按钮和父 MDIarea,如果我有多个具有不同对象的子窗口,我的目标是在这种情况下获取活动子窗口对象名称,例如 subwindow_test_the_object_name名称,我可以抓住这个对象名称作为信号。谢谢。