crossplatform.ru

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


  Ответ в QDockWidget, расстановка окон
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 10 сообщений [ в обратном порядке ]
DEADHUNT Дата 25.8.2009, 22:24
  а как нибудь можно правильно расставить при создании главного окна?

tabifyDockWidget помогло.
0xF Дата 3.5.2008, 0:41
  А хз, просто без него не работает и при сохранении Qt пишет в консоль, что имя объекта не задано...
Litkevich Yuriy Дата 2.5.2008, 19:01
  не понял, а что это дает?
чтобы в файл имена объектов писались?
0xF Дата 2.5.2008, 18:58
  Оказывается надо вызывать setObjectName для всех окошек...
0xF Дата 1.5.2008, 15:48
  Есть ли ещё какие-нить предложения?
Litkevich Yuriy Дата 30.4.2008, 22:32
  да о нем, просто я прочитал строчку "через save/restore geometry" и в твой код не смотрел, т.к. голова у же не соображает, спать надо :lazy:
0xF Дата 30.4.2008, 22:25
  Как это не обратил? О_о Вот же он:
...
else {
        QByteArray geo_data        = saveGeometry();
        QByteArray layout_data    = saveState(); // *******

        bool ok = file.putChar( (uchar)geo_data.size() );
...

Ты же о нем?
Litkevich Yuriy Дата 30.4.2008, 22:13
  потомучто ты на saveState() необратил внимание
void MainWindow::saveLayout()
{
    QString fileName
        = QFileDialog::getSaveFileName(this, tr("Save layout"));
    if (fileName.isEmpty())
        return;
    QFile file(fileName);
    if (!file.open(QFile::WriteOnly)) {
        QString msg = tr("Failed to open %1\n%2")
                        .arg(fileName)
                        .arg(file.errorString());
        QMessageBox::warning(this, tr("Error"), msg);
        return;
    }

    QByteArray geo_data = saveGeometry();
    QByteArray layout_data = saveState();

    bool ok = file.putChar((uchar)geo_data.size());
    if (ok)
        ok = file.write(geo_data) == geo_data.size();
    if (ok)
        ok = file.write(layout_data) == layout_data.size();

    if (!ok) {
        QString msg = tr("Error writing to %1\n%2")
                        .arg(fileName)
                        .arg(file.errorString());
        QMessageBox::warning(this, tr("Error"), msg);
        return;
    }
}
0xF Дата 30.4.2008, 20:02
  Там это сделано через save/restore geometry
Скопипастил загрузку настроек в конструктор, сохранение - в closeEvent
// ** Загрузка
QEditorWindow::QEditorWindow( void )
{
    ...
QString fileName = "settings.set";

QFile file( fileName );

if( !file.open( QFile::ReadOnly ) ) {
    QMessageBox::warning(this, tr("Error"), "");
    return;
}

uchar geo_size;
QByteArray geo_data;
QByteArray layout_data;

bool ok = file.getChar((char*)&geo_size);
if (ok) {
    geo_data = file.read(geo_size);
    ok = geo_data.size() == geo_size;
}
if (ok) {
    layout_data = file.readAll();
    ok = layout_data.size() > 0;
}

if (ok)
    ok = restoreGeometry(geo_data);
if (ok)
    ok = restoreState(layout_data);

if (!ok) {
    QString msg = tr("Error reading %1")
        .arg(fileName);
    QMessageBox::warning(this, tr("Error"), msg);
    return;
}
}

// ** Сохранение
void QEditorWindow::closeEvent( ... )
{
    QString fileName = "settings.set";

    QFile file( fileName );
    if( !file.open( QFile::WriteOnly ) ) {
        QString msg = "Failed to open" + fileName;
        QMessageBox::warning( this, "Error", msg );
    } else {
        QByteArray geo_data        = saveGeometry();
        QByteArray layout_data    = saveState();

        bool ok = file.putChar( (uchar)geo_data.size() );

        if( ok ) {
            ok = file.write( geo_data ) == geo_data.size();
        }
        if( ok )
            ok = file.write(layout_data) == layout_data.size();

        if( !ok ) {
            QString msg = "Error writing" + fileName;
            QMessageBox::warning( this, "Error", msg );
        }
    }
}


В результате восстанавливаются только размеры окна, а положение окошек - нет :( Почему?
Litkevich Yuriy Дата 30.4.2008, 19:10
  ну глянь пример %QTDIR%\demos\mainwindow
там есть возможность сохранять настройки окна и положение подокон, а также загружать их.
Посмотри как реализована загрузка, что и как настраивается.
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 9.7.2025, 13:07