Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Система рисования. Печать _ Совмещение виджетов и opengl

Автор: KuvshinoF 27.5.2020, 12:17

На форме есть 5 виджетов (квадратные QLabel-ы), расположенные в строку - между каждой из их пары надо нарисовать opengl-стрелку(функция отрисовки стрелки есть). Как это сделать, то есть совместить opengl-сцену с, получается что, наложенными на нее виджетами? Виджеты должны быть именно виджетами, а не opengl-рисованными квадратами, так как надо будет обрабатывать их онклик, да, можно и у opengl-сцены обработать mousePressEvent, но тогда как определить на какой именно квадрат(типа QLabel) кликнули? по координатам мыши проверять как-то не очень объектно-ориентированно, поэтому элементы для онклика должны быть отдельными объектами, т.е. виджетами.

Автор: Алексей1153 28.5.2020, 9:47

KuvshinoF, редактор форм и компоновщик в помощь )
Можно и вручную накидать, если не лень



ну или поверх одного виджета opengl создать чайлды - лейблы и разместить без компоновщиков. Тогда они, теоретически, будут всегда поверх. Но за координатами нужно будет следить вручную

Автор: KuvshinoF 28.5.2020, 9:53

Ну заводить для каждой стрелки свою opengl-сцену (QOpenGLWidget) точно не лучший вариант наверное, не оптимальный, а положить поверх одной gl-сцены виджеты не выходит.

Автор: Алексей1153 28.5.2020, 10:08

Цитата(KuvshinoF @ 28.5.2020, 11:53) *
а положить поверх одной gl-сцены виджеты не выходит.


нормально выходит всё (у меня всё создано с редактора, но можно и без него. Родительство расставил вручную, см. код)



MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->pushButton->setParent(ui->openGLWidget);
    ui->label->setParent(ui->openGLWidget);
}

Автор: KuvshinoF 28.5.2020, 17:37

Спасибо, буду пробовать

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)