我有一个我没有设置的QMdiArea
对象,但如下所述。QMainWindow
setCentralWidget()
MainWindow::createMdiArea() {
QMdiArea mdiArea = new QMdiArea(this)
mdiArea.setGeometry(0,0,1024,600);
mdiArea.show();
}
我不想将其设置QMdiArea
为中心小部件。现在我在里面创建了一些子窗口QMdiArea
,如下
MainWindow::createChildWindow()
{
HelpWindow child1 = new HelpWindow(). // HelpWindow is a very simple class derived from QWidget and containing one QLineEdit.
mdiArea.addSubWindow(&child1);
// Set the geometry of Child widget.
child1.parentWidget()->setGeometry(0,0,400,100); // Setting geometry which I have saved.
child1.show();
}
到目前为止,一切都很好。但问题是在子窗口调整大小/关闭事件中我需要保存的大小,HelpWindow
并且我正在执行以下操作以在其调整大小/关闭事件中保存子窗口的大小。
saveHelpWindowSize(size());
saveHelpWindowPos(pos());
好的。问题来了。我从size()
子窗口内的函数获得的大小与我在函数中使用的大小不同setGeometry()
,即使我在调整大小事件(即关闭事件)以外的其他方法中看到它。
所以,假设第一次创建子窗口的大小(使用 setGeometry)400、200,当我关闭这个窗口时,我将从中获得的大小HelpWindow::size()
可能会说(385, 190)
我将保存,下一次setGeometry()
将从中获得这个大小设置,此时在关闭事件中我会得到更小的尺寸,最终我的子窗口将具有 size (0, 0)
。
1:关于如何同步这两种尺寸的任何想法(即,如果子小部件由setGeometry()
函数设置的大小和我从小部件的size()
功能获得的小部件的大小)
2:另一个问题,我在子小部件(HelpWindow
)类中接收resizeEvent / closeEvent事件等,但是当我将子窗口移动到里面时我没有收到moveEvent,QMdiArea
我收到这个事件的唯一时间是我最大化里面的子窗口QMdiArea
(我不会这样做)。所以当它的位置改变时,我需要保存我的子窗口的位置。我该怎么做?