この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