14

QDockWidget の初期幅を設定するにはどうすればよいですか?

sizeHint 関数を実装しましたが、次は?

4

2 に答える 2

15

のドキュメントにQDockWidgetは次のように書かれています:

QDockWidget は、その子ウィジェットのラッパーとして機能し、setWidget() で設定されます。カスタム サイズのヒント、最小サイズと最大サイズ、およびサイズ ポリシーを子ウィジェットに実装する必要があります。QDockWidget はそれらを尊重し、独自の制約を調整してフレームとタイトルを含めます。サイズの制約は、ドッキングされているかどうかによって変わるため、 QDockWidget 自体に設定しないでください。ドッキングされた QDockWidget にはフレームがなく、タイトル バーが小さくなります。

したがって、サイズのヒントは、ドック ウィジェットに入力したものから取得されます。QDockWidgetの子のサイズを設定しようとしましたか?

しかし、私はマリウスに同意します。おそらく最善QSettingsの方法は、アプリケーションの起動時にすべてのドック ウィンドウの幅を保存して復元することです。個々の関数からではなく、データを取得することをQMainWindow::saveState除けば、saveState私の保存関数はマリウスによって与えられたものと非常によく似ています。

于 2008-10-10T12:58:36.260 に答える
6

前回プログラムを実行したときと同じ幅にしたい場合は、設定を調べる必要があります。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();

}

于 2008-10-10T12:46:16.457 に答える