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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Окно и позиционирование  (Прочитано 9652 раз)
aliks-os
Гость
« : Апрель 13, 2007, 13:44 »

Извините за частые вопросы, и возможно глупые вопросы - я новичок.

Как по умолчанию расположить главное окно программы в центре экрана, а то при запуске оно у меня появляется в произвольном месте.

А также как расположить дочерние окна (модальные) в центре относительно родительского.

Qt 4.2.1 Linux
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Апрель 13, 2007, 14:30 »

размер десктопа можно получить из

http://doc.trolltech.com/4.2/qdesktopwidget.html

соответственно, нужно только будет просчитать координаты окна и сдвинуть его туда Подмигивающий
Записан
aliks-os
Гость
« Ответ #2 : Апрель 13, 2007, 14:36 »

Спасибо, жаль, что нет такого слота (функции), у виджета...тролли что то подкачали...
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Апрель 13, 2007, 14:41 »

вообще, это дело window manager'а где располагать окна, так что всё правильно они сделали.

Всё зависит от от него и его возможностей. Он может быть либо калечным как в win, либо нормальным, как в KDE.

К тому когда у тебя несколько экранов, где нужно расположить тот же splash screen знает только WM.
Записан
aliks-os
Гость
« Ответ #4 : Апрель 13, 2007, 14:50 »

так что получается, получаем размеры из qdesktopwidget, далее берем размеры своего главного окна, вычисляем его центральное положение относительно qdesktopwidget и применяем их к своему к своему главному окну в свойства pos : QPoint ?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Апрель 13, 2007, 14:56 »

ну да Улыбающийся после вычисления координат останется только QWidget::move() вызвать
Записан
aliks-os
Гость
« Ответ #6 : Апрель 13, 2007, 15:05 »

ясно
часов нет случайно готового куска кода, чтобы лишний раз не ломать голову?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Апрель 13, 2007, 15:12 »

ёптыть, что тут голову ломать ? на два поделить ? Улыбающийся

Что-то типа
Код:

MyWidget::MyWidget() : QWidget()
{
    QDesktopWidget dw;
    QRect rc = dw.screenGeometry(this);

    show();
    move((rc.width() - width())/2, (rc.height() - height())/2);
}
Записан
aliks-os
Гость
« Ответ #8 : Апрель 13, 2007, 15:24 »

Да....туплю явно под конец дня...
Спасибо большое
Записан
SABROG
Гость
« Ответ #9 : Апрель 13, 2007, 18:59 »

Код:

void TForm::ScreenCenter()
{
   setGeometry((int)(QApplication::desktop()->width() - (QApplication::desktop()->width() - (QApplication::desktop()->width() / 2)) * 1.5) / 2,
  (int)(QApplication::desktop()->height() - (QApplication::desktop()->height() -
  (QApplication::desktop()->height() / 2)) * 1.5) / 2,
  (int)((QApplication::desktop()->width() -  (QApplication::desktop()->width() / 2)) * 1.5),
  (int)((QApplication::desktop()->height() - (QApplication::desktop()->height() / 2)) * 1.5));

}

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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