Как добавить QWidget в QGLWidget

Как в настоящее время лучше всего добавить QWidget в QGLWidget в качестве дочернего элемента? В этом случае я хочу добавить QSlider в QGLWidget, однако кажется, что половина ссылок в Google теперь указывают на мертвую информацию, поэтому сложно понять, каков текущий способ добиться этого.

Я пытался создать QSlider в качестве дочернего элемента и настроить геометрию, но, похоже, это мало что дало.


person Nicholas Smith    schedule 23.06.2015    source источник
comment
Возможно, вы слышали, что QGLWidget сейчас устарело и что вам следует использовать QOpenGLWidget?   -  person thuga    schedule 23.06.2015
comment
На самом деле не было, спасибо. С появлением этого нового типа виджета появился ли новый метод добавления QWidget в качестве дочерних элементов?   -  person Nicholas Smith    schedule 23.06.2015
comment
Я не пробовал, но, насколько я знаю, должно работать, просто установив родитель. QGLWidget никогда не поддерживал правильное добавление дочерних виджетов, поэтому вам приходилось либо рисовать их непосредственно на QGLWidget, либо помещать в QGraphicsScene. Хотя с QOpenGLWidget это должно быть возможно.   -  person thuga    schedule 23.06.2015


Ответы (1)


Дочерние виджеты не работают с QGLWidget, это задокументировано.

Используйте QOpenGLWidget, и дочерние виджеты будут работать нормально. В этом плане делать особо нечего, просто добавить дочерние виджеты, макеты и т.д., и все "просто работает".

person Kuba hasn't forgotten Monica    schedule 23.06.2015
comment
Это здорово, спасибо. Можете ли вы указать какие-либо примеры кода QOpenGLWidget? Я попытался сделать первоначальный порт моего QGLWidget на него, но столкнулся с различными проблемами с ошибками сегментации, что, я думаю, означает, что мне где-то не хватает инициализатора, но документация по нему не ясна. - person Nicholas Smith; 24.06.2015
comment
На самом деле удалось преобразовать его, не уверен на 100%, как, но я думаю, что полагался на вызовы в нужном месте для старого формата и в неправильном месте для нового формата. Я создал новый QOpenGLWidget и реализовал базовую функциональность для тестирования, затем повторно реализовал свою функциональность сверху, и все в порядке. - person Nicholas Smith; 24.06.2015