0

trolltech のいくつかの例では、単純な Qt アプリケーションのメイン ウィンドウとして QMainWindow ではなく QWidget を使用しています。

ここで必要なのは、クライアント領域全体をカバーする単一のコンテンツ ウィジェット (QGlWidget) を備えた単純なウィンドウだけです。

ただし、単一のコンテンツ ウィンドウを含む QWidget ウィンドウを表示すると、自動的にサイズが変更されて小さくなります。

子なしで QWidget 親ウィンドウを作成すると、デフォルトのサイズが大きくなります。

単一の子ウィンドウにレイアウトを使用することに頼りたくありません:/

4

3 に答える 3

3

私が理解しているのは、QWidget を使用して QGIWidget を表示するということです。QGIWidget の show メソッドを直接呼び出してみてください (QGIWidget クラスが QWidget を継承している場合)、Qt がウィンドウの装飾を作成します。

それ以外の場合、ウィジェットを相互に配置し、そのサイズに合わせる必要がある場合は、レイアウトを使用する必要があります

于 2010-02-02T08:55:41.253 に答える
2

gregseth のアドバイスに従うか、自分でウィジェットのサイズを変更することができます。(ただし、この方法では、レイアウトを使用するときに Qt によって提供される素敵な自動サイズ変更が失われます)

あなたの場合、基本的に次のようなことができます:

QGlWidget* myWidget = new QGlWidget;
myWidget->resize(QApplication::desktopWidget()->availableGeometry().size());

// or maybe instead of resizing show it in fullscreen:
myWidget->showFullScreen();

(実際には、showFullScreen() がサイズ変更を行うかどうかは覚えていません。おそらく、resize+showFullScreen の両方が必要になるでしょう :))

乾杯 :)

PSレイアウトの使用は実際にはオプションです。高価ではなく、柔軟性があります。取得するすべて:「layout = new QVBoxLayout(myWidget); layout->addWidget(myWidget);」そして、あなたは完了です:)

于 2010-02-02T12:39:52.727 に答える
0

常にではない。

QVBoxLayout と QHBoxLayout を使用して子ウィジェットを配置すると、QMainWindow が親ウィジェットとして機能しないことがわかりました。

QWidget を作成し、それを QMainWindow の代わりに使用すると、レイアウトは正しく機能します。

QWidget* centralWidget = new QWidget( MainWindow );
MainWindow->setCentralWidget( centralWidget );

QtCreator を使用して作成されたコードを見ると、最上位でレイアウトを直接使用しようとすると、「非表示」ウィジェットが作成されていることがわかります。

私が見つけたどこにも、明白でも、直感的でも、文書化されていません。

于 2013-02-05T21:08:17.657 に答える