Глава 23 – Работа с OpenGL

Работа с OpenGL

Приобрести книгу можно на сайте ozon.ru и в электронном виде на Google Play:
Приобрести книгу о Qt и C++ на Ozon.ru Купить книгу о Qt и C++ на Goole Play

6 thoughts on “Глава 23 – Работа с OpenGL

  1. Уважаемый Макс. Столкнулся с такой проблемой. Немного изменил код примера, который приведен на страницах 347-350 (листинги 23.1-23.6). В функции main вместо “oglQuad.show();” прописал “oglQuad.showFullScreen();” И чтобы была возможность закрыть окно, реализовал для класса OGLQuad метод keyPressEvent, получилось следующее:
    1) в header-файле стандартное определение: “virtual void keyPressEvent(QKeyEvent*);”
    2) в cpp-файле реализация:
    /*virtual */void OGLQuad::keyPressEvent(QKeyEvent* pe) {
    if(pe->key()==Qt::Key_Escape) this->close();
    }
    Всё заработало. Насколько корректен такой вариант?
    Но почему-то не работал вариант с сигналом, который высылался(emit) из этого-же метода. Как я понял классу OGLQuad “не понравился” макрос Q_OBJECT. Компилятор выдавал множественные ошибки вида: “…undefined reference to `vtable for OGLQuad’ “. Не подскажите в чем проблема?

    1. Здравствуйте, Вячеслав!
      Варриант с реализацией метода обработки события keyPressEvent() вполне приемлим. Единственное “this->” можно опустить.
      На счет ошибок при компиляции, макрос Q_OBJECT тут думаю не причем. Проследите чтобы имя .h файла, в котором находится макрос, был указан в секции HEADERS в .pro файла.

  2. Макс, хотел еще спросить. Вы постоянно в реализациях виртуальных методов в начале пишите /*virtual */, это чтобы не смотря в определение можно было понять, что метод(функция) виртуальный? Правильно я понял?

  3. Здравствуйте!
    В точности переписал пример на страницах 347-350 и получил ошибки такого толка “Ссылка на нерезрешённый внешний символ_…”
    Ругается на функции вроде glBegin().
    Подскажите, что именно я упускаю?

Добавить комментарий