Название: Отображение виджета в центре экрана Отправлено: Admin от Сентябрь 25, 2006, 13:52 Как всегда отображать диалог в центре экрана. У меня есть визард, у которого постоянно меняются размеры окна в зависимости от шага.
Хотелость бы всегда выставлять его в цент экрана. Название: Отображение виджета в центре экрана Отправлено: ufna от Сентябрь 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 от Сентябрь 25, 2006, 16:48 Используй QApplication::desktop()->width() и QApplication::desktop()->height()
Название: Отображение виджета в центре экрана Отправлено: ufna от Сентябрь 25, 2006, 17:03 Цитата: "Alexei" Используй QApplication::desktop()->width() и QApplication::desktop()->height() QApplication::desktop()->screenGeometry().center() аналогично :) Только смотря через что решать проблему - через центр или черз ширину и высоту.Название: Отображение виджета в центре экрана Отправлено: Admin от Сентябрь 25, 2006, 17:22 ага! я так примерно и думал!
Название: Отображение виджета в центре экрана Отправлено: Alex03 от Сентябрь 26, 2006, 05:52 А вот нужно ли такое поведение?
Юзер задвинул диалог в угол, нажал на след.шаг, диалог в центре, опять задвинул в угол, опять нажал на след.шаг, и диалог опять в центре? ИМХО не правильно это. Может у юзера по центру экрана критически важная инфа отображается. :) Т.е. центрирование относительно предыдущего положения с контролем уплывания за край экрана ИМХО лучше. Название: Отображение виджета в центре экрана Отправлено: Dendy от Сентябрь 26, 2006, 09:19 Мне вот нравятся окошки nVidia'вских визардов инсталляции драйверов, рассчитанньІх на 800х600, когда сейчас у тебя на столе 640х480. Вот и думай, как дотянкться до кнопки внизу или до заголовка вверху, которьІе за екраном.
QWidget::showNormal() хотя бьІ гарантирует, что заголовок будет виден. Ето так к слову... А вообще не нужно мешать пользователю двигать окно (-: Он будет не рад. Название: Отображение виджета в центре экрана Отправлено: bigirbis от Сентябрь 27, 2006, 09:49 Так немного короче:
Код: widget->move( QApplication::desktop()->size() - widget->size() ) / 2 ) Название: Отображение виджета в центре экрана Отправлено: Dendy от Сентябрь 27, 2006, 13:22 Цитата: "bigirbis" Так немного короче: Код: widget->move( QApplication::desktop()->size() - widget->size() ) / 2 ) К сожалению, между геометрическими классами нет методов кастирования. Типа: Код: QPoint QSize::toPoint() const; Поетому короткий вариант работать не будет. Название: Отображение виджета в центре экрана Отправлено: bigirbis от Сентябрь 27, 2006, 14:19 Пардон, ошибся. :oops: Наверное так:
Код: widget->move( QRect( QPoint(), ( QApplication::desktop()->size() - widget->size() ) / 2 ).bottomLeft() ); Не шибко коротко. :? |