0

我正在编写一个 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

4

0 回答 0