Russian Qt Forum
Ноябрь 02, 2024, 00:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QMainWindow + OpenGL  (Прочитано 5390 раз)
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« : Октябрь 11, 2011, 14:25 »

Доброго дня) Нужно отобразить графику OpenGL в главном окне Qt:
Класс главного окна:

Код:
class ClientGL : public QMainWindow, public Ui::ClientGLClass 
{
Q_OBJECT

public:
ClientGL(QWidget *parent = 0, Qt::WFlags flags = 0);
~ClientGL();
};

я так понимаю надо создать еще один класс:

Код:
class DrawOpenGL : public QGLWidget
{
Q_OBJECT

public:
DrawOpenGL();

protected:
    virtual void initializeGL();
    virtual void resizeGL(int nWidth, int nHeight);
    virtual void paintGL();

};

И этот класс каким-то образом увязать с главным окном.. вопрос КАК???!!!
Допустим разместить через Qt Desiner, например, объект QWidget и в него выводить.. можно?? Тогда каким образом, подскажите пожалуйста?! =)


Записан
alexman
Гость
« Ответ #1 : Октябрь 11, 2011, 15:50 »

void QMainWindow::setCentralWidget ( QWidget * widget )
А в дизайнере через "Promote to".
Записан
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #2 : Октябрь 11, 2011, 16:54 »

void QMainWindow::setCentralWidget ( QWidget * widget )
А в дизайнере через "Promote to".

Если я правильно понял в конструкторе главного окна (QMainWindow) добавляем:

setCentralWidget(widgetGL); // где widgetGL objectName виджета

в дизайнере: правой кнопкой по Главному окну -> Promote to, где выбираем
"Base class name:" - QWidget
"Promoted class name:" - DrawOpenGL
"Header file:" - тот хедер, где описан DrawOpenGL

тем самым мы свяжем главное окно с виджетом? И функции
    virtual void initializeGL();
    virtual void resizeGL(int nWidth, int nHeight);
    virtual void paintGL();
должны вызываться автоматически при создании главного окна??? Или как оно должно работать?!
 
Записан
alexman
Гость
« Ответ #3 : Октябрь 12, 2011, 07:51 »

Про ООП почитал бы для начала.
Записан
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #4 : Октябрь 12, 2011, 09:33 »

Про ООП почитал бы для начала.

И, что конкретно мне о нем (ООП) почитать, что решит мой вопрос?
Записан
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #5 : Октябрь 12, 2011, 12:15 »

Что за форум, сам вопрос задаешь и сам же на него отвечаешь ((
Может кому пригодится, работает так:
Код:
class DrawOpenGL;
class ClientGL : public QMainWindow, public Ui::ClientGLClass
{
Q_OBJECT

public:
ClientGL(QWidget *parent = 0, Qt::WFlags flags = 0);
~ClientGL();

        DrawOpenGL *glWidget;
};

В конструкторе класса  ClientGL:
Код:
glWidget = new DrawOpenGL(widgetGL); // где widgetGL objectName виджета
widgetGL->setLayout(new QHBoxLayout);
widgetGL->layout()->addWidget(glWidget);

в методах initializeGL(); resizeGL(int nWidth, int nHeight); paintGL(); задаешь нужные параметры отрисовки OpenGL

Вот и все)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.121 секунд. Запросов: 22.