Russian Qt Forum
Ноябрь 27, 2024, 04:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Положение окна программы  (Прочитано 10511 раз)
sinbad7
Гость
« : Октябрь 11, 2011, 10:53 »

Привет всем.
Нужно запоминать положение окна программы при закрытии и восстанавливать его при запуске программы.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Октябрь 11, 2011, 10:55 »

Код
C++ (Qt)
void MainWindow::loadSettings ()
{
QSettings settings;
settings.beginGroup ("GUI");
settings.beginGroup ("MainWindow");
 
const QPoint pos = settings.value ("pos").toPoint();
 
if (!pos.isNull()) {
move (pos);
}
 
settings.endGroup();
settings.endGroup();
}
 
void MainWindow::saveSettings ()
{
QSettings settings;
settings.beginGroup ("GUI");
settings.beginGroup ("MainWindow");
 
settings.setValue ("pos", pos());
 
settings.endGroup();
settings.endGroup();
}
 
« Последнее редактирование: Октябрь 11, 2011, 10:58 от Пантер » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Октябрь 11, 2011, 11:02 »

2 Пантер
А
Код
C++ (Qt)
QByteArray QWidget::saveGeometry () const
bool QWidget::restoreGeometry ( const QByteArray & geometry )
для кого сделаны?
Записан

Qt 5.11/4.8.7 (X11/Win)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Октябрь 11, 2011, 11:08 »

С ним какой-то косяк был, не помню уже. Вроде, проблема была при сохранении параметров развернутости окна.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Октябрь 11, 2011, 11:12 »

С ним какой-то косяк был, не помню уже. Вроде, проблема была при сохранении параметров развернутости окна.
В любом случае в твоём примере нет сохранения/восстановления размеров окна. Какой смысл хранить только позицию? Разве что для окна с фиксированным размером, но это особенный случай)
Записан

Qt 5.11/4.8.7 (X11/Win)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Октябрь 11, 2011, 11:15 »

GreatSnake, да какая разница? Был вопрос про сохранение/восстановление положения окна - я ответил. Твое решение тоже правильное, но сохраняет не только положение.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #6 : Октябрь 11, 2011, 11:17 »

GreatSnake, да какая разница?
Да это я так, типа придираюсь)
Записан

Qt 5.11/4.8.7 (X11/Win)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Октябрь 11, 2011, 11:23 »

Как там называется человек, который всех критикует? Подмигивающий
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #8 : Октябрь 11, 2011, 11:31 »

Баг был с тем, что на маке в геометрию не входит ширина тулбара. Окно каждый раз становится меньше по высоте.
Записан
sinbad7
Гость
« Ответ #9 : Октябрь 11, 2011, 13:29 »

Спасибо всем кто откликнулся, попробую оба варианта, мне в принципе достаточно положения на экране, а размеры не так важны
« Последнее редактирование: Октябрь 11, 2011, 13:35 от sinbad7 » Записан
iroln
Гость
« Ответ #10 : Октябрь 11, 2011, 19:03 »

А как определить, на каком мониторе закрылось максимизированное окно, чтобы потом его восстановить на том же самом мониторе, на котором оно закрылось?
« Последнее редактирование: Октябрь 11, 2011, 19:05 от iroln » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #11 : Октябрь 11, 2011, 19:23 »

А как определить, на каком мониторе закрылось максимизированное окно, чтобы потом его восстановить на том же самом мониторе, на котором оно закрылось?
Код
C++ (Qt)
int QDesktopWidget::screenNumber ( const QWidget * widget = 0 ) const
Записан

Qt 5.11/4.8.7 (X11/Win)
sinbad7
Гость
« Ответ #12 : Октябрь 12, 2011, 07:08 »

Использовал способ readSettings и writeSettings как в примере Application, немного подпилил и заработало.
GreatSnake и Пантер спасибо большое
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.141 секунд. Запросов: 22.