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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отображение виджета в центре экрана  (Прочитано 7628 раз)
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« : Сентябрь 25, 2006, 13:52 »

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

Хотелость бы всегда выставлять его в цент экрана.
Записан
ufna
Гость
« Ответ #1 : Сентябрь 25, 2006, 14:21 »

делаештся таким образом:
Зохидся в исходники кути, сплеш скрин Улыбающийся
А далее ищется:

QRect r(0, 0, d->pixmap.size().width(), d->pixmap.size().height());
    resize(d->pixmap.size());
    move(QApplication::desktop()->screenGeometry().center() - r.center());

Отсюда - что требуется:
1. Подключить "qapplication.h" и "qdesktopwidget.h".
2. Найти центр виджета как точку.
3. Сделать то, что указано в функции Улыбающийся

Можно и без поиска точки, просто как ширина пополам, длина пополам.
Записан
Alexei
Гость
« Ответ #2 : Сентябрь 25, 2006, 16:48 »

Используй QApplication::desktop()->width() и QApplication::desktop()->height()
Записан
ufna
Гость
« Ответ #3 : Сентябрь 25, 2006, 17:03 »

Цитата: "Alexei"
Используй QApplication::desktop()->width() и QApplication::desktop()->height()
QApplication::desktop()->screenGeometry().center() аналогично Улыбающийся Только смотря через что решать проблему - через центр или черз ширину и высоту.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #4 : Сентябрь 25, 2006, 17:22 »

ага! я так примерно и думал!
Записан
Alex03
Гость
« Ответ #5 : Сентябрь 26, 2006, 05:52 »

А вот нужно ли такое поведение?
Юзер задвинул диалог в угол, нажал на след.шаг, диалог в центре, опять задвинул в угол, опять  нажал на след.шаг, и диалог опять в центре?

ИМХО не правильно это.
Может у юзера по центру экрана критически важная инфа отображается. Улыбающийся

Т.е. центрирование относительно предыдущего положения с контролем уплывания за край экрана ИМХО лучше.
Записан
Dendy
Гость
« Ответ #6 : Сентябрь 26, 2006, 09:19 »

Мне вот нравятся окошки nVidia'вских визардов инсталляции драйверов, рассчитанньІх на 800х600, когда сейчас у тебя на столе 640х480. Вот и думай, как дотянкться до кнопки внизу или до заголовка вверху, которьІе за екраном.

QWidget::showNormal() хотя бьІ гарантирует, что заголовок будет виден. Ето так к слову...

А вообще не нужно мешать пользователю двигать окно (-:  Он будет не рад.
Записан
bigirbis
Гость
« Ответ #7 : Сентябрь 27, 2006, 09:49 »

Так немного короче:
Код:
widget->move( QApplication::desktop()->size() - widget->size() ) / 2 )
Записан
Dendy
Гость
« Ответ #8 : Сентябрь 27, 2006, 13:22 »

Цитата: "bigirbis"
Так немного короче:
Код:
widget->move( QApplication::desktop()->size() - widget->size() ) / 2 )


К сожалению, между геометрическими классами нет методов кастирования. Типа:

Код:
QPoint QSize::toPoint() const;


Поетому короткий вариант работать не будет.
Записан
bigirbis
Гость
« Ответ #9 : Сентябрь 27, 2006, 14:19 »

Пардон, ошибся. :oops: Наверное так:
Код:
widget->move( QRect( QPoint(), ( QApplication::desktop()->size() - widget->size() ) / 2 ).bottomLeft() );

Не шибко коротко.  :?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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