crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Как сохранить размеры формы на выходе из проги
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 14.4.2010, 20:23
 
Цитата(Lonely_hermit @ 14.4.2010, 2:02) *
и два сплиттера между ними
если мне не изменяет память, то для корректного восстановления панелей инструментов, компоновщиков и т.п. нужно соответствующим объектам установить objectName, а потом использовать saveState/restoreState
ufna Дата 13.4.2010, 22:10
  Я использую так (для 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);
}
Lonely_hermit Дата 13.4.2010, 22:02
  Здравствуйте.
Как мне сохранить размеры формы на выходе из программы, если у меня на ней три фрейма с TableView и два сплиттера между ними.
Премного благодарен.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 14:42