« boost.contextを使ってみました。 | トップページ | QGraphicsSceneを複数のQGraphicsViewから参照したとき »

2012年9月23日 (日)

起動時にQDockWidgetの状態を復元する

QDockWidget::saveGeomerty() / QDockWidget::restoreGeometry()を使えば、ウインドウの位置/状態を簡単に前回終了状態に戻せるとのことなので、下記のようなコードを書いてみました。

/* --------------------------------------------------------------------------------------
 *  復元
 * -------------------------------------------------------------------------------------- */
void CMessageWindow::restoreSettings( QSettings* settings ) {
    QVariant v = settings->value( STATE_MESSAGE_WINDOW_GEOMETRY );
    if( !v.isNull() ) {
        m_dock_widget->restoreGeometry( v.toByteArray() );
    }
}
/* --------------------------------------------------------------------------------------
 *  保存
 * -------------------------------------------------------------------------------------- */
void CMessageWindow::saveSettings( QSettings* settings ) {
    settings->setValue( STATE_MESSAGE_WINDOW_GEOMETRY, m_dock_widget->saveGeometry() );
}

だけど、元に戻るのは、Dockがメインウインドウにくっついていないときだけで、半日ほど悩みました。

いろいろやった結果、メインウインドウ(QMainWindow)の状態を保持/復元してあげれば、くっついているDockにも適用されました。

|

« boost.contextを使ってみました。 | トップページ | QGraphicsSceneを複数のQGraphicsViewから参照したとき »

C++」カテゴリの記事

Qt」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 起動時にQDockWidgetの状態を復元する:

« boost.contextを使ってみました。 | トップページ | QGraphicsSceneを複数のQGraphicsViewから参照したとき »