Qt MDI应用程序,其窗口只能占用有限的大小

时间:2013-08-01 11:34:06

标签: qt mdi childwindow

我正在编写一个Qt MDI应用程序,使用此MDI example作为起点 当然,这个例子可以正常工作。我的程序反而有这个问题:

当我调整子窗口的大小时,会调整其大小,但当其大小超过某个级别时,其中一部分将不再可见。这就像是有一个有限的区域(矩形),通过它可以看到子窗口。除此之外的一切都是隐藏的。

子窗口可见的矩形在创建时具有子窗口本身的大小。

enter image description here

这是代码的工作摘录:

// 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

0 个答案:

没有答案