Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как сохранить размеры формы на выходе из проги
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Модель/Представление
Lonely_hermit
Здравствуйте.
Как мне сохранить размеры формы на выходе из программы, если у меня на ней три фрейма с TableView и два сплиттера между ними.
Премного благодарен.
ufna
Я использую так (для QMainWidow - если просто виджет, выкинь saveState etc):

Раскрывающийся текст
// cUConvMainWindow class constructor
//--------------------------------------------------------------------------------------
cUConvMainWindow::cUConvMainWindow(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ....

    loadWindowState();

        ....
}

//--------------------------------------------------------------------------------------
void cUConvMainWindow::closeEvent(QCloseEvent * event)   // closeEvent catcher - control of unsaved data
{
    saveWindowState();

    event->accept();
    qApp->exit();
}

//--------------------------------------------------------------------------------------
void cUConvMainWindow::loadWindowState()         // Load and apply window size etc
{
    QSettings settingsFile( "config.ini", QSettings::IniFormat );
    QPoint pos = settingsFile.value("Layout/Pos", QPoint(-1, -1)).toPoint();
    QSize size = settingsFile.value("Layout/Size", QSize(320, 240)).toSize();
    bool maximized = settingsFile.value("Layout/Maximized", false).toBool();

    resize(size);

    if( pos == QPoint(-1,-1) ) {
        QRect r( 0, 0, width(), height() );        // Window rectangle
        move(QApplication::desktop()->screenGeometry().center() - r.center());
    }
    else
        move(pos);

    if( maximized )
        setWindowState(windowState() ^ Qt::WindowMaximized);

    int stateNum = settingsFile.value("Layout/StateNum", 0).toInt();
    QByteArray stateArray = settingsFile.value(QString("Layout/StateData%1").arg(stateNum)).toByteArray();
    restoreState(stateArray, stateNum);
}

//--------------------------------------------------------------------------------------
void cUConvMainWindow::saveWindowState()         // Save window size etc
{
    QSettings settingsFile( "config.ini", QSettings::IniFormat );
    settingsFile.setValue("Layout/Maximized", isMaximized());
    if( !isMaximized() ) {
        settingsFile.setValue("Layout/Pos", pos());
        settingsFile.setValue("Layout/Size", size());
    }

    int stateNum = 0;
    QByteArray stateArray = saveState(stateNum);
    settingsFile.setValue(QString("Layout/StateData%1").arg(stateNum), stateArray);
}
Litkevich Yuriy
Цитата(Lonely_hermit @ 14.4.2010, 2:02) *
и два сплиттера между ними
если мне не изменяет память, то для корректного восстановления панелей инструментов, компоновщиков и т.п. нужно соответствующим объектам установить objectName, а потом использовать saveState/restoreState
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.