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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Расположение одного виджета в центре другого  (Прочитано 4426 раз)
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« : Ноябрь 28, 2012, 22:41 »

Доброго вечера! Вопрос как разместить белый квадрат (QGraphicsView) по центру синего виджета, при этом белый квадрат всегда должен оставаться квадратом, размер которого должен меняться в зависимости от разрешения экрана! Основной класс - это QMainWindow, на котором размещены виджеты, созданные и скомпонованные в дизайнере!
Записан
Bepec
Гость
« Ответ #1 : Ноябрь 28, 2012, 23:06 »

Берём уравнения для третьего класса школы Улыбающийся
Высчитываем центр и фигачим его туда. А пропорциональные размеры высчитываются по другим формулам уже пятого класса Улыбающийся

PS есть путь и через дизайнер Веселый
Записан
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #2 : Ноябрь 28, 2012, 23:23 »

Берём уравнения для третьего класса школы Улыбающийся
Высчитываем центр и фигачим его туда. А пропорциональные размеры высчитываются по другим формулам уже пятого класса Улыбающийся

PS есть путь и через дизайнер Веселый

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

в зависимости от разрешения, размеры синего прямоугольника меняются!
« Последнее редактирование: Ноябрь 28, 2012, 23:25 от Vladimir » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Ноябрь 29, 2012, 07:26 »

если не поможет
Код
C++ (Qt)
QWidget::adjustSize()
перегрузи
Код
C++ (Qt)
QWidget::showEvent()
или
Код
C++ (Qt)
QWidget::setVisible()
Записан

Qt 5.11/4.8.7 (X11/Win)
_OLEGator_
Гость
« Ответ #4 : Ноябрь 29, 2012, 09:06 »

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

PROFIT
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #5 : Ноябрь 29, 2012, 12:07 »

Через void QObject::installEventFilter ( QObject * filterObj ) на синий виджет и фильтрацию QEvent::Resize не вариант?
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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