0

このMDI の例を出発点として使用して、Qt 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