问题标签 [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 投票
0 回答
641 浏览

qt - cascadeSubWindows() 之后的 QMdiArea 子窗口大小

我尝试制作我的第一个 MDI 应用程序。我已经使用 QMdiArea 作为中央小部件制作了主窗口。我需要添加带有大 QTableWidget 的子窗口 ProjectWindow。但是添加的子窗口的大小是 220x64 而不是 800x600。220x64 是 ProjectWindow 和 SubWindow 的 sizeHint 但我不知道如何改变它。我可以在添加子窗口后更改大小,但在使用 cascadeSubWindows() 后,所有子窗口都会再次变小。代码如下:

0 投票
1 回答
513 浏览

qt - Show the log text in QMainWindow with MdiArea

I have developed an application in Qt with QMainWindow as a main Widget, and added Mdiarea I needed for adding QMdieSubWindows.

I want know how to have a logging area like in Qt Creator.

My log text is basically what is going on. As

Started the optimizer ... File is saved ... The file is not loaded ... and etc.

I thought of adding a QPlainTextEdit or a QTextEdit, and just append text to them.

I wrote this in my QMainWindow.cpp:

But this is showing the plainText over my Menu in QMainWindow;

I would like to have it on the bottom, above my StatusBar.

I would like to ask now:

  1. QPlainTextEdit or QTextEdit: which one is better for my task? I need only appending the text, and maybe highlighting, and coloring the text.

  2. How to get the Q(Plain)TextEdit as for example in QtCreator at the bottom with fixed position and fixed width?

I tried to create an MdiSubWindow and add the plaintext widget into it, and show it. It works as I wanted, and I can add text in it. But I can not still make fixed at the bottom. Any ideas?

0 投票
2 回答
1945 浏览

qt - QMdiArea:第一个选项卡工作正常,第二个选项卡的内容太小

情况:作为我的应用程序的中心小部件,我有一个处于选项卡模式的QMdiArea (包装在从QMdiArea继承的自定义类中)。当我现在通过一切添加第一个QMdiSubWindowaddSubWindow()时,一切都很好,这意味着窗口及其内容被最大化以占用QMdiArea的所有空间。但是,一旦我添加了第二个子窗口,就会出现以下问题:

问题:第二个窗口的内容没有显示,而是第一个窗口的内容继续显示(尽管第二个选项卡在视觉上具有焦点),但尺寸减小了。它只占用几个像素。但是,如果我现在切换回第一个子窗口/选项卡(通过单击缩小尺寸的小部件,然后自动返回到最大尺寸或通过选择第一个选项卡标题),然后再次选择第二个,一切都很好 =第二个选项卡的小部件/编辑器现在显示并最大化。

但直到我关闭第二个选项卡,在这种情况下,第一个选项卡的内容才会显示(如预期的那样),但同样只能以小尺寸显示!

截屏: 概述问题的屏幕截图

另一个相关的测试用例:创建第一个选项卡并按预期显示全尺寸。如果我现在简单地调整整个QMainWindow的大小,我的选项卡中的小部件周围会突然出现一个模糊的边框。因此,它似乎处于最大化模式和带边框的正常模式之间的混合状态。这会产生任何新的潜在客户吗?

截屏:

概述相关问题的屏幕截图

到目前为止,我没有使用任何明确定义的布局,但鉴于第一个选项卡工作正常,并且在手动来回切换所有其他选项卡之后,我认为它应该可以不使用。

我需要设置显式布局对象吗?为什么它适用于第一个选项卡,而不适用于第二个?

一些代码作为基础:这是在我的自定义QMdiArea类中执行的逻辑,负责添加新的孩子:

更新:添加了N1ghtLight 提出的 hack。在编码中如此标记。

更新 2:编辑/更正问题描述 + 带有屏幕截图的新测试用例。

0 投票
1 回答
569 浏览

qt - QMDI 子窗口切换

我有一个 MDI 应用程序,其类为

我正在创建一个新的 mdiSubWindow,每个都newfile()创建MainWindow一个指向 GraphicsView 的新指针。

GraphicsView创建一个新场景的构造函数。

现在,当创建了多个 subWindows 时,我失去了在以前的 subWindows 中工作的能力。只有最新的 subWindow 按预期工作。例如。我QGraphicsItems只能在最新的子窗口中绘制,而不能在以前的子窗口中绘制。

我想我应该使用activeSubWindow()但无法弄清楚如何让每个 subWindow 响应选项卡的变化。我应该如何实现这个?

0 投票
2 回答
1007 浏览

c++ - QMdiSubWindow中的qt定位控件

我在 QMdiSubWindow 派生中的定位控件有问题。我使用 QtDesigner 设计了我的窗口,它看起来像这样:QtDesigner 中的视图

当我运行应用程序时,它看起来像这样(标题栏上的按钮): 应用程序视图(mdisubwin 正常) 只有在最大化模式下才能正常:应用程序视图(mdisubwin 最大化) 但我希望它总是看起来正常。这是 .ui 文件的一部分:

似乎它是相对于窗口角呈现的 - 无论窗口的标题栏如何......我该如何修复它?我正在使用 Qt 5.2.1(和 Visual Studio 2010 的 qt 插件)。

0 投票
0 回答
2005 浏览

python - 关闭/删除 QMdiArea 子窗口的正确方法?

我有一个使用 PyQt 4 编写的简单应用程序,其中包括一个由 QMdiArea 组成的 MainWindow。当用户开始一个新会话(新实验)时,会生成两个窗口。用户还可以从分析模块列表中选择也运行。

我不希望允许任何窗口的任何重复(即,在下面的示例代码中,用户只能拥有一个 file_tree_window、一个 data_plot_window 和/或一个 cell_monitor_window)。

因此,例如,如果用户选择一次“新实验”,则会生成两个窗口。如果他/她再次选择“新实验”,则应该关闭原来的两个窗口并打开两个新窗口。任何“分析模块”也是如此。(即选择一个已经打开的将导致打开的关闭并打开一个新的)。

不过,我无法生成此功能。

首先,代码:

这在很多方面都不起作用:

  • 如果我打开“Cell Health Monitor”窗口,将其关闭,然后尝试重新打开,Python 会崩溃
  • 如果我打开了“Cell Health Monitor”窗口,然后尝试启动“New Experiment”,然后打开“Cell Health Monitor”窗口,Python 崩溃

我尝试使用 remove() 而不是 close():

IE:

根据一系列操作,Python 要么崩溃,要么我收到以下两条错误消息之一:

(这实际上只是一个警告):

或者

对于在不产生这些问题的情况下如何以不同的方式删除子窗口,我感到茫然。

谢谢

0 投票
1 回答
573 浏览

python-2.7 - 如何将 QMdiSubWindow 放入 QMdiArea QMainWindow?

我是pyqt的新手。我想用 Qmainwindow 及其菜单栏和菜单项做一个应用程序。当我单击某个菜单项时,QMdiSubWindow 应该出现在 qmdiarea 中,我该怎么做?这是我的 qmainwindow 代码:

这是我的 QMdiSubWindow 代码:

提前致谢

更新:我修改了 actionFriends_click 函数,如下所示:

更新2:我忘记了。我们必须在 Ui_mainForm 中添加一个引用

在这种情况下,QMdiSubWindows Ui_friendForm 类位于 VIEW 包中。

0 投票
3 回答
905 浏览

c++ - 是否可以重命名 qt 子窗口?

我在主窗口的 QMdiArea 中设置了一个子窗口。然后我制作了一个 QDialog,我希望用户在其中输入子窗口的标题名称。但是在尝试将 windowTitle() 更改为该变量时,我总是遇到错误。

有什么方法可以更新 windowTitle() 吗?

模块名称.cpp

模块名.h

iwb4.cpp

iwb4.h

在此处输入图像描述

谢谢你的帮助。

0 投票
1 回答
1154 浏览

qt - 在最大化 QMdiSubWindow 之后,下一个要选择的 QMdiSubWindow 也被最大化。我该如何阻止这个?

编辑:

我认为这是一个错误,它实际上是 Qt 文档中描述的默认行为(完全隐藏得更像)......“当活动子窗口最大化时,默认行为是最大化下一个被激活的子窗口”


问题:

当 a 中有多个QMdiSubWindowsQMdiArea并且一些被标记为“留在顶部”时,它们会与“最大化”窗口进行奇怪的交互。也就是说,当一个窗口最大化并且仍然有其他子窗口呈现在它上面时,会发生奇怪的行为。

当单击任何“停留在顶部”窗口或与之交互时,它们会最大化并恢复最大化的窗口。

到目前为止,我似乎无法弄清楚一个窗口的状态如何被另一个窗口跟踪,源代码一团糟,他们使用的私有类模型令人困惑,并且基本上不可能与实现进行交互很好。我也没有在文档中找到任何解释该行为的内容。

演示此行为的最小项目如下:

主文件

主窗口.h

主窗口.cpp

主窗口.ui

0 投票
1 回答
132 浏览

c++ - 将 QMdiSubWindow 添加到当前 QStackedLayout

所以我有这个代码:

由于某种原因不起作用。我想要做的是获取布局中显示的小部件 - 作为 QMdiArea,然后向其添加子窗口。

PS这是完整应用程序的简化版本。将子窗口直接添加到 mdi1 会起作用,但这不是我想要的(因为 QStackedLayout 中有很多 QMdiArea)。