crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Совмещение виджетов и opengl
KuvshinoF
  опции профиля:
сообщение 27.5.2020, 12:17
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 25.7.2013
Пользователь №: 3887

Спасибо сказали: 0 раз(а)




Репутация:   0  


На форме есть 5 виджетов (квадратные QLabel-ы), расположенные в строку - между каждой из их пары надо нарисовать opengl-стрелку(функция отрисовки стрелки есть). Как это сделать, то есть совместить opengl-сцену с, получается что, наложенными на нее виджетами? Виджеты должны быть именно виджетами, а не opengl-рисованными квадратами, так как надо будет обрабатывать их онклик, да, можно и у opengl-сцены обработать mousePressEvent, но тогда как определить на какой именно квадрат(типа QLabel) кликнули? по координатам мыши проверять как-то не очень объектно-ориентированно, поэтому элементы для онклика должны быть отдельными объектами, т.е. виджетами.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
KuvshinoF
  опции профиля:
сообщение 28.5.2020, 9:53
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 25.7.2013
Пользователь №: 3887

Спасибо сказали: 0 раз(а)




Репутация:   0  


Ну заводить для каждой стрелки свою opengl-сцену (QOpenGLWidget) точно не лучший вариант наверное, не оптимальный, а положить поверх одной gl-сцены виджеты не выходит.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 28.5.2020, 10:08
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(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);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.11.2024, 23:43