Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QMainWindow расположение


Автор: null56 6.1.2009, 03:20
Как выровнять виджет по центру экрана?
Есть главное окно, хотелось бы сделать так, чтобы оно появлялось по центру экрана, а не в  углу или в произвольном месте. Такое возможно?

Заранее благодарен за помощь

Автор: SABROG 6.1.2009, 11:29
Код

int dwidth = QApplication::desktop()->width(),
dheight = QApplication::desktop()->height();
    setGeometry((int)(dwidth - (dwidth - (dwidth / 2)) * 1.5) / 2,
    (int)(dheight - (dheight - (dheight / 2)) * 1.5) / 2,
    (int)((dwidth -  (dwidth / 2)) * 1.5),
    (int)((dheight - (dheight / 2)) * 1.5));

Автор: null56 15.4.2009, 14:15
только руки добрались... спасибо
а за расположение компонентов должен отвечать уже менеджер компановки?

Автор: Acer 15.4.2009, 14:47
еще можно использовать QDesktopWidget

Автор: SABROG 15.4.2009, 16:48
Цитата(Acer @ 15.4.2009,  14:47)
еще можно использовать QDesktopWidget

А я потом к такому пришел:

Код

QRect gry = geometry();
    gry.moveCenter(qApp->desktop()->availableGeometry().center());
    setGeometry(gry);

Автор: null56 18.4.2009, 15:47
Acer, что ты имеешь в виду? SABROG и использует вроде, при вычислении размеров и положоения QDesktopWidget
Код

QDesktopWidget * desktop ()

Автор: Acer 19.4.2009, 09:51
null56, Тоже, что и SABROG, только можно не из QApplication брать QDesktopWidget, а поросто
Код

#include <QtGui/QDesktopWidget>
//.....................
QDesktopWidget desktop;
int w = desktop.screenGeometry().width();
int h = desktop.screenGeometry().height();

Автор: SABROG 19.4.2009, 14:02
Еще такой вариант можно:

Код

    QRect frect = frameGeometry();
    frect.moveCenter(QDesktopWidget().availableGeometry().center());
    move(frect.topLeft());

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)