Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: studentenok от Декабрь 02, 2007, 22:32



Название: виджет по центру окна(главного) и др подробности для окон
Отправлено: studentenok от Декабрь 02, 2007, 22:32
подскажите, стартёр я  :-[
есть главное окно порождённое  от своего class Configurator : public QMainWindow

1. как указать при запуске размещаться по центру экрана
2. как другим  виджетам(диалогам) вызываемым "поверх" главного окна сказать не выходить за рамки этого главного окна
3. как отрисовать картинку в каких-либо координатах главного окна (чет не выходит )?



Название: Re: виджет по центру окна(главного) и др подробности для окон
Отправлено: ритт от Декабрь 03, 2007, 03:41
1. move((QApplication::desktop()->width() - width()) / 2, (QApplication::desktop()->height() - height()) / 2);
2. ознакомиться с моделированием SDI/MDI. спросить ассистант. опционально, заюзать qmdilib
3. поскольку я, теряясь в догадках, не знаю что подразумевается конкретно: высчитать координаты и рисовать на главном окне


Название: Re: виджет по центру окна(главного) и др подробности для окон
Отправлено: pastor от Декабрь 03, 2007, 04:21
3. Если нужно отобразить картинку на главном окне можно разместить на нем QLabel и при помощи
setPixmap установить картинку. Другой вариант - отрисовать картинку. Переопределяем paintEvent виджета и в нем рисуен картинку (см. в QPainter - drawPixmap, drawImage, drawPicture).

Уточните что нужно, и тогда точно вам подскажут что делать ;)


Название: Re: виджет по центру окна(главного) и др подробности для окон
Отправлено: Barmaglodd от Декабрь 03, 2007, 09:47
1. move((QApplication::desktop()->width() - width()) / 2, (QApplication::desktop()->height() - height()) / 2);
А вот где это вызывать?
Есть конструктор формы, в нем динамически добавляются виджеты, потом делаю layout()->setSizeConstraint(QLayout::SetFixedSize), и, как написано выше, двигаю окно. Но width() и height() возвращают какие-то левые значения(видимо,размеры по-умолчанию или заданные в дизайнере), не то что получилось в результате layout()->setSizeConstraint(QLayout::SetFixedSize).
Для окон с неизменяемым в рантайме размером все нормально.
qApp->sendPostedEvents() и qApp->processEvents() не помогают.


Название: Re: виджет по центру окна(главного) и др подробности для окон
Отправлено: Alex03 от Декабрь 03, 2007, 10:00
Если у Вас X11 то может вот тут ответ/объяснения найдёте:
http://doc.trolltech.com/4.3/geometry.html (http://doc.trolltech.com/4.3/geometry.html)


Название: Re: виджет по центру окна(главного) и др подробности для окон
Отправлено: Barmaglodd от Декабрь 03, 2007, 10:20
Нет, у меня винда и Qt 4.2.3


Название: Re: виджет по центру окна(главного) и др подробности для окон
Отправлено: pastor от Декабрь 03, 2007, 13:49
А вот где это вызывать?

Споймать или перегрузить showEvent и там вызвать


Название: Re: виджет по центру окна(главного) и др подробности для окон
Отправлено: Barmaglodd от Декабрь 04, 2007, 10:39
Споймать или перегрузить showEvent и там вызвать
Спасибо, теперь корректно позиционируется.