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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGLWidget и меню  (Прочитано 5250 раз)
crackedmind
Гость
« : Июль 08, 2009, 18:10 »

Вообщем есть родительский QWidget. В нем дочерний QGLWidget, в котором рисуется сцена. Хочу добавить главное меню. Но вот тут появилась проблема.
Если я добавляю еще дочерний QMenuBar, то он отрисовывается под QGLWidget'ом. Т.к. получается, что у них одинаковые координаты (Я их оставил по дефолту). Как бы это можно побороть? не двигая глвиджет...
« Последнее редактирование: Июль 09, 2009, 15:18 от crackedmind » Записан
f-r-o-s-t
Гость
« Ответ #1 : Июль 08, 2009, 18:14 »

А в QMainWindow что мешает все это поместить ?
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #2 : Июль 08, 2009, 18:32 »

Да правильно в QMainWindow надо и в setCentralWidget - засунуть QGLWidget и все ок будет.
Записан
crackedmind
Гость
« Ответ #3 : Июль 09, 2009, 01:43 »

Действительно. Забыл про QMainWindow Улыбающийся
Записан
crackedmind
Гость
« Ответ #4 : Июль 09, 2009, 15:25 »

Теперь другая проблема. Есть меню. Сделал GLWidget центральным, но теперь, если отображается меню, то сцена обрезается снизу на 19 пикселей (как раз высота меню). Как бы это безобразие побороть? Т.е. нужно как то правильно ресайзить окошко.

Точнее проблема в том, что menuBar()->height() - возвращает 30, а не 19.

p.s. хотя такое ощущение, что я где-то что забыл и пропустил Улыбающийся
« Последнее редактирование: Июль 09, 2009, 15:33 от crackedmind » Записан
f-r-o-s-t
Гость
« Ответ #5 : Июль 09, 2009, 16:29 »

Не понял ничего =(
Если ты делаешь виджет центральным, добавляешь меню(статус бары, тулбары), то все что связанно с ресайзом на себя
берет QMainWindow, ты там часом вручную ничего не позиционируешь, может скинешь код ?
Записан
crackedmind
Гость
« Ответ #6 : Июль 09, 2009, 17:01 »

Ладно попробую еще раз объяснить Улыбающийся

Код можно найти по ссылке в подписи. Но там пока отсутсвует код с меню.

Это примерно так выглдит.
Код:
myMainWindow::myMainWindow() : QMainWindow(0)
{
   QGLWidget * w = new QGLWidget(this);
   setCentralWidget(w);
   resize(800, 576); // 576 для того чтоб влезало 18 тайлов по 32 пикселя.
}

теперь после добавления меню, 18 тайлов не влезают в отрисовку. Т.е. мне надо ресайз делать 576 + высота menuBar'a. Но menuBar()->height() - возвращает 30 пикселей. А y() centralWidget'a = 19. Как получить это волшебное число 19? Улыбающийся
Записан
f-r-o-s-t
Гость
« Ответ #7 : Июль 09, 2009, 17:09 »

Задай размеры QGLWidget и затем сделай его центральным, а если тебе так надо отображать тайлы ровно, так и сделай размеры фиксированными =)
Записан
crackedmind
Гость
« Ответ #8 : Июль 09, 2009, 17:15 »

Ну он и так центральный. Размеры фиксированы. При ресайзе центрального виджета, размеры самого MainWindow не меняются.


p.s. Хотя кажись нашел. Нужно использовать функцию menuBar()->sizeHint() вместо menuBar()->height()
Записан
f-r-o-s-t
Гость
« Ответ #9 : Июль 09, 2009, 17:17 »

Ну он и так центральный. Размеры фиксированы. При ресайзе центрального виджета, размеры самого MainWindow не меняются.


p.s. Хотя кажись нашел. Нужно использовать функцию menuBar()->sizeHint() вместо menuBar()->height()

Я имел ввиду сначала задать ему фиксированные размеры, а затем сделать центральным и тогда Главное окно под него бы
подогналось. Ну хорошо что сам нашел способ =)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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