Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Vladimir от Ноябрь 28, 2012, 22:41



Название: Расположение одного виджета в центре другого
Отправлено: Vladimir от Ноябрь 28, 2012, 22:41
Доброго вечера! Вопрос как разместить белый квадрат (QGraphicsView) по центру синего виджета, при этом белый квадрат всегда должен оставаться квадратом, размер которого должен меняться в зависимости от разрешения экрана! Основной класс - это QMainWindow, на котором размещены виджеты, созданные и скомпонованные в дизайнере!


Название: Re: Расположение одного виджета в центре другого
Отправлено: Bepec от Ноябрь 28, 2012, 23:06
Берём уравнения для третьего класса школы :)
Высчитываем центр и фигачим его туда. А пропорциональные размеры высчитываются по другим формулам уже пятого класса :)

PS есть путь и через дизайнер :D


Название: Re: Расположение одного виджета в центре другого
Отправлено: Vladimir от Ноябрь 28, 2012, 23:23
Берём уравнения для третьего класса школы :)
Высчитываем центр и фигачим его туда. А пропорциональные размеры высчитываются по другим формулам уже пятого класса :)

PS есть путь и через дизайнер :D

насколько я помню 3й класс, чтобы найти центр, надо знать размеры, в моем случае, синего прямоугольника! а его реальные размеры я узнаю после функции show(), когда уже все свершилось. Если узнать размеры до show(), то выводятся минимальные размеры, установленные в дизайнере! может я что-то не так делаю) а как через дизайнер, подскажите пожалуйста?))

в зависимости от разрешения, размеры синего прямоугольника меняются!


Название: Re: Расположение одного виджета в центре другого
Отправлено: GreatSnake от Ноябрь 29, 2012, 07:26
если не поможет
Код
C++ (Qt)
QWidget::adjustSize()
перегрузи
Код
C++ (Qt)
QWidget::showEvent()
или
Код
C++ (Qt)
QWidget::setVisible()


Название: Re: Расположение одного виджета в центре дру&
Отправлено: _OLEGator_ от Ноябрь 29, 2012, 09:06
Добавляешь в Q*Layout (установлен на синий виджет) свой белый виджет.
Указываешь максимальные (или фиксированные) размеры для белого виджета, чтобы он ре растягивался больше необходимого.
Используешь
Код
C++ (Qt)
bool QLayout::setAlignment ( QWidget * w, Qt::Alignment alignment )
для установки выравнивания виджета.

PROFIT


Название: Re: Расположение одного виджета в центре другого
Отправлено: Kurles от Ноябрь 29, 2012, 12:07
Через void QObject::installEventFilter ( QObject * filterObj ) на синий виджет и фильтрацию QEvent::Resize не вариант?