« 2012年2月 | トップページ | 2012年10月 »

2012年9月

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にも適用されました。

| | コメント (0) | トラックバック (0)

« 2012年2月 | トップページ | 2012年10月 »