QDockWidget の初期幅を設定するにはどうすればよいですか?
sizeHint 関数を実装しましたが、次は?
のドキュメントにQDockWidget
は次のように書かれています:
QDockWidget は、その子ウィジェットのラッパーとして機能し、setWidget() で設定されます。カスタム サイズのヒント、最小サイズと最大サイズ、およびサイズ ポリシーを子ウィジェットに実装する必要があります。QDockWidget はそれらを尊重し、独自の制約を調整してフレームとタイトルを含めます。サイズの制約は、ドッキングされているかどうかによって変わるため、 QDockWidget 自体に設定しないでください。ドッキングされた QDockWidget にはフレームがなく、タイトル バーが小さくなります。
したがって、サイズのヒントは、ドック ウィジェットに入力したものから取得されます。QDockWidget
の子のサイズを設定しようとしましたか?
しかし、私はマリウスに同意します。おそらく最善QSettings
の方法は、アプリケーションの起動時にすべてのドック ウィンドウの幅を保存して復元することです。個々の関数からではなく、データを取得することをQMainWindow::saveState
除けば、saveState
私の保存関数はマリウスによって与えられたものと非常によく似ています。
前回プログラムを実行したときと同じ幅にしたい場合は、設定を調べる必要があります。Qt 4.4 のドキュメントには、ここで設定を使用する方法の例があります。
これが私がやった方法です:
void Applicotion::readSettings() {
QSettings settings("Company Name", "Application Name");
settings.beginGroup("LibraryDock");
libraryDock->setFloating(settings.value("docked").toBool());
libraryDock->resize(settings.value("size", QSize(1, 1)).toSize());
libraryDock->move(settings.value("pos", QPoint(200, 200)).toPoint());
addDockWidget((Qt::DockWidgetArea)settings.value("dockarea", Qt::RightDockWidgetArea).toInt(), libraryDock);
settings.endGroup();
}
void Applicotion::writeSettings() {
QSettings settings("Company Name", "Application Name");
settings.beginGroup("LibraryDock");
settings.setValue("dockarea", dockWidgetArea(libraryDock));
settings.setValue("docked", libraryDock->isFloating());
settings.setValue("size", libraryDock->size());
settings.setValue("pos", libraryDock->pos());
settings.endGroup();
}