Название: GUI для QGlWidget Отправлено: deMax от Май 14, 2015, 10:56 Есть трехмерная сцена моделирующая некоторый процесс, как создать элементы управления (кнопки/текст) поверх трехмерной сцены?
Qt5, opengl через QGlWidget без QPainter. Название: Re: GUI для QOpenGlWidget Отправлено: gil9red от Май 14, 2015, 11:43 QGlWidget это обычный виджет, у него есть layout, вот и добавьте прямо на его компоновщик кнопки
Название: Re: GUI для QOpenGlWidget Отправлено: Igors от Май 14, 2015, 11:52 QGlWidget это обычный виджет, у него есть layout, вот и добавьте прямо на его компоновщик кнопки Поверх QGLWidget никакие виджеты рисоваться не будут (прямой вывод на экран). К тому же QGLWidget deprecated. А вот с QOpenGLWidget все будет как Вы сказали. Что впрочем не значит что QOpenGLWidget "лучше" - там свои минусыНазвание: Re: GUI для QOpenGlWidget Отправлено: deMax от Май 14, 2015, 12:00 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 правильнее будет интерфейс нарисовать, тем более он очень простой - текст и кнопки (по сути картинки с прозрачностью). Название: Re: GUI для QOpenGlWidget Отправлено: gil9red от Май 14, 2015, 12:03 QGlWidget это обычный виджет, у него есть layout, вот и добавьте прямо на его компоновщик кнопки Поверх QGLWidget никакие виджеты рисоваться не будут (прямой вывод на экран). К тому же QGLWidget deprecated. А вот с QOpenGLWidget все будет как Вы сказали. Что впрочем не значит что QOpenGLWidget "лучше" - там свои минусыКак все-таки мудрено :) Помнится в готовых инструментах здесь кто-то выкладывал виджет-стекло, которое размещается поверх указанного виджета Ведь можно такое замутить: поверх QGLWidget разместить свой виджет, а на свой уже и запихать кнопки :) Название: Re: GUI для QOpenGlWidget Отправлено: Igors от Май 14, 2015, 12:53 Как все-таки мудрено :) То стекло не будет работать поверх QGLWidget или QOpenGLWindow. Вот окно (не просто виджет) будет, но тогда капитальный геморрой с фокусомПомнится в готовых инструментах здесь кто-то выкладывал виджет-стекло, которое размещается поверх указанного виджета Ведь можно такое замутить: поверх QGLWidget разместить свой виджет, а на свой уже и запихать кнопки :) Название: Re: GUI для QOpenGlWidget Отправлено: deMax от Май 14, 2015, 12:56 И как тогда gui рисовать? рендерить изображения элементов, потом биндить в текстуру и отрисовывать на прямоугольниках?
Название: Re: GUI для QOpenGlWidget Отправлено: Igors от Май 14, 2015, 13:50 И как тогда gui рисовать? рендерить изображения элементов, потом биндить в текстуру и отрисовывать на прямоугольниках? Если у Вас QGLWidget - то сначала исправьте название темы, а то хз о чем говорить. Название: Re: GUI для QOpenGlWidget Отправлено: ibnz от Май 14, 2015, 16:13 Есть вариант маскировать область с GUI, если дизайн предполагает их компактное статичное размещение.
Название: Re: GUI для QOpenGlWidget Отправлено: Igors от Май 14, 2015, 16:31 Есть вариант маскировать область с GUI, Если можно - подробнее (какие вызовы OpenGL и.т.п.). СпасибоНазвание: Re: GUI для QOpenGlWidget Отправлено: ibnz от Май 15, 2015, 10:36 Есть вариант маскировать область с GUI, Если можно - подробнее (какие вызовы OpenGL и.т.п.). Спасибо1. Сделать обычный виджет с гуем в нужном месте. 2. Cверху кинуть gl виджет у которого с помощью setMask вырезана та часть, где должен быть гуи. 3. PROFIT. Название: Re: GUI для QOpenGlWidget Отправлено: Igors от Май 15, 2015, 11:07 1. Сделать обычный виджет с гуем в нужном месте. Ой, что-то слишком просто :) Ну ладно, пусть ТС проверяет 2. Cверху кинуть gl виджет у которого с помощью setMask вырезана та часть, где должен быть гуи. 3. PROFIT. Название: Re: GUI для QOpenGlWidget Отправлено: deMax от Май 15, 2015, 11:40 1. Сделать обычный виджет с гуем в нужном месте. 2. Cверху кинуть gl виджет у которого с помощью setMask вырезана та часть, где должен быть гуи. 3. PROFIT. Можно еще проще, на виджет кинуть QGLWidget вне компоновщика, просто присвоить ему родителем этот виджет и в методе resize масштабировать его под базовый виджет. Это все работает, только я хотел в OpenGl порисовать. Сцена отрисовывается через VBO и glUseProgram с шейдерами. Как мне картинку отрисовать? через прямоугольник с текстурой или на пиксельных шейдерах как то можно вывести картинки с нужными координатами без масштабирования? Название: Re: GUI для QGlWidget Отправлено: deMax от Май 15, 2015, 15:08 Как рисовать в координатах экрана?
|