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);
}