Russian Qt Forum
Ноябрь 01, 2024, 06:36
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
GUI для QGlWidget
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: GUI для QGlWidget (Прочитано 8375 раз)
deMax
Хакер
Offline
Сообщений: 600
GUI для QGlWidget
«
:
Май 14, 2015, 10:56 »
Есть трехмерная сцена моделирующая некоторый процесс, как создать элементы управления (кнопки/текст) поверх трехмерной сцены?
Qt5, opengl через QGlWidget без QPainter.
«
Последнее редактирование: Май 15, 2015, 08:01 от deMax
»
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: GUI для QOpenGlWidget
«
Ответ #1 :
Май 14, 2015, 11:43 »
QGlWidget это обычный виджет, у него есть layout, вот и добавьте прямо на его компоновщик кнопки
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: GUI для QOpenGlWidget
«
Ответ #2 :
Май 14, 2015, 11:52 »
Цитата: gil9red от Май 14, 2015, 11:43
QGlWidget это обычный виджет, у него есть layout, вот и добавьте прямо на его компоновщик кнопки
Поверх QGLWidget никакие виджеты рисоваться не будут (прямой вывод на экран). К тому же QGLWidget deprecated. А вот с QOpenGLWidget все будет как Вы сказали. Что впрочем не значит что QOpenGLWidget "лучше" - там свои минусы
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: GUI для QOpenGlWidget
«
Ответ #3 :
Май 14, 2015, 12:00 »
Цитата: gil9red от Май 14, 2015, 11:43
QGlWidget это обычный виджет, у него есть layout, вот и добавьте прямо на его компоновщик кнопки
Да только кнопку воткнешь, тут же ворох ошибок:
Цитировать
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::pen: Painter not active
QPainter::setPen: Painter not active
....
Рисую через paintGL(), не paintEvent(QPaintEvent*).
Мне кажется через opengl правильнее будет интерфейс нарисовать, тем более он очень простой - текст и кнопки (по сути картинки с прозрачностью).
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: GUI для QOpenGlWidget
«
Ответ #4 :
Май 14, 2015, 12:03 »
Цитата: Igors от Май 14, 2015, 11:52
Цитата: gil9red от Май 14, 2015, 11:43
QGlWidget это обычный виджет, у него есть layout, вот и добавьте прямо на его компоновщик кнопки
Поверх QGLWidget никакие виджеты рисоваться не будут (прямой вывод на экран). К тому же QGLWidget deprecated. А вот с QOpenGLWidget все будет как Вы сказали. Что впрочем не значит что QOpenGLWidget "лучше" - там свои минусы
Как все-таки мудрено
Помнится в готовых инструментах здесь кто-то выкладывал виджет-стекло, которое размещается поверх указанного виджета
Ведь можно такое замутить: поверх QGLWidget разместить свой виджет, а на свой уже и запихать кнопки
«
Последнее редактирование: Май 14, 2015, 12:08 от gil9red
»
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: GUI для QOpenGlWidget
«
Ответ #5 :
Май 14, 2015, 12:53 »
Цитата: gil9red от Май 14, 2015, 12:03
Как все-таки мудрено
Помнится в готовых инструментах здесь кто-то выкладывал виджет-стекло, которое размещается поверх указанного виджета
Ведь можно такое замутить: поверх QGLWidget разместить свой виджет, а на свой уже и запихать кнопки
То стекло не будет работать поверх QGLWidget или QOpenGLWindow. Вот окно (не просто виджет) будет, но тогда капитальный геморрой с фокусом
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: GUI для QOpenGlWidget
«
Ответ #6 :
Май 14, 2015, 12:56 »
И как тогда gui рисовать? рендерить изображения элементов, потом биндить в текстуру и отрисовывать на прямоугольниках?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: GUI для QOpenGlWidget
«
Ответ #7 :
Май 14, 2015, 13:50 »
Цитата: deMax от Май 14, 2015, 12:56
И как тогда gui рисовать? рендерить изображения элементов, потом биндить в текстуру и отрисовывать на прямоугольниках?
Если у Вас QGLWidget - то сначала исправьте название темы, а то хз о чем говорить.
Записан
ibnz
Гость
Re: GUI для QOpenGlWidget
«
Ответ #8 :
Май 14, 2015, 16:13 »
Есть вариант маскировать область с GUI, если дизайн предполагает их компактное статичное размещение.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: GUI для QOpenGlWidget
«
Ответ #9 :
Май 14, 2015, 16:31 »
Цитата: ibnz от Май 14, 2015, 16:13
Есть вариант маскировать область с GUI,
Если можно - подробнее (какие вызовы OpenGL и.т.п.). Спасибо
Записан
ibnz
Гость
Re: GUI для QOpenGlWidget
«
Ответ #10 :
Май 15, 2015, 10:36 »
Цитата: Igors от Май 14, 2015, 16:31
Цитата: ibnz от Май 14, 2015, 16:13
Есть вариант маскировать область с GUI,
Если можно - подробнее (какие вызовы OpenGL и.т.п.). Спасибо
1. Сделать обычный виджет с гуем в нужном месте.
2. Cверху кинуть gl виджет у которого с помощью setMask вырезана та часть, где должен быть гуи.
3. PROFIT.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: GUI для QOpenGlWidget
«
Ответ #11 :
Май 15, 2015, 11:07 »
Цитата: ibnz от Май 15, 2015, 10:36
1. Сделать обычный виджет с гуем в нужном месте.
2. Cверху кинуть gl виджет у которого с помощью setMask вырезана та часть, где должен быть гуи.
3. PROFIT.
Ой, что-то слишком просто
Ну ладно, пусть ТС проверяет
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: GUI для QOpenGlWidget
«
Ответ #12 :
Май 15, 2015, 11:40 »
Цитата: ibnz от Май 15, 2015, 10:36
1. Сделать обычный виджет с гуем в нужном месте.
2. Cверху кинуть gl виджет у которого с помощью setMask вырезана та часть, где должен быть гуи.
3. PROFIT.
Можно еще проще, на виджет кинуть QGLWidget вне компоновщика, просто присвоить ему родителем этот виджет и в методе resize масштабировать его под базовый виджет.
Это все работает, только я хотел в OpenGl порисовать. Сцена отрисовывается через VBO и glUseProgram с шейдерами. Как мне картинку отрисовать? через прямоугольник с текстурой или на пиксельных шейдерах как то можно вывести картинки с нужными координатами без масштабирования?
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: GUI для QGlWidget
«
Ответ #13 :
Май 15, 2015, 15:08 »
Как рисовать в координатах экрана?
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...