我正在编写一个Qt MDI应用程序,使用此MDI example作为起点 当然,这个例子可以正常工作。我的程序反而有这个问题:
当我调整子窗口的大小时,会调整其大小,但当其大小超过某个级别时,其中一部分将不再可见。这就像是有一个有限的区域(矩形),通过它可以看到子窗口。除此之外的一切都是隐藏的。
子窗口可见的矩形在创建时具有子窗口本身的大小。
这是代码的工作摘录:
// 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