我正在编写一个 Qt MDI 应用程序,使用这个MDI 示例作为起点。
当然,该示例可以正常工作。我的程序反而有这个问题:
当我调整子窗口的大小时,它会调整大小,但是当它的大小高于某个级别时,它的一部分不再可见。这就像子窗口可见的有限区域(矩形)一样。除此之外的一切都是隐藏的。
子窗口可见的矩形在创建时具有子窗口本身的大小。
这是代码的工作摘录:
// mdi_test.h
#ifndef MDI_TEST_H
#define MDI_TEST_H
#include <QtGui>
class ViewerWindow : public QMdiSubWindow
{
Q_OBJECT
};
class TopLevelWindow : public QMainWindow
{
Q_OBJECT
public:
TopLevelWindow(QWidget*);
private slots:
void newPlotView();
ViewerWindow* createViewerWindow();
private:
QMdiArea *mdiArea;
};
#endif // MDI_TEST_H
// mdi_test.cpp
#include "mdi_test.h"
TopLevelWindow::TopLevelWindow(QWidget *parent)
: QMainWindow(parent)
{
mdiArea = new QMdiArea;
newPlotView();
newPlotView();
newPlotView();
setCentralWidget(mdiArea);
}
void TopLevelWindow::newPlotView()
{
ViewerWindow *newViewer = createViewerWindow();
newViewer->show();
}
ViewerWindow* TopLevelWindow::createViewerWindow()
{
ViewerWindow *viewer = new ViewerWindow;
mdiArea->addSubWindow(viewer);
return viewer;
}
// entrypoint.cpp
#include <QApplication>
#include "mdi_test.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
TopLevelWindow *top = new TopLevelWindow(0);
top->show();
return app.exec();
}
当然,如果你编译运行这个例子,你不会发现我的问题。问题是这与实际项目中使用的代码框架相同,其他一切似乎都与这个问题无关。
这段代码的行为是否可能在其他上下文中有所不同?
平台:Windows 7、Qt 4.8.5、MinGW