FLTK から QT5 にいくつかのコードを移行していますが、OpenGL コンテキストに対応するグラフィカル デザインのウィジェットを取得できないようです。そのようなウィジェットは存在しますか?
OpenGLオプションを使用してVS2012x64をターゲットにして、公式ソースからQTを構築QT += opengl
し、project.proファイルに追加しようとしました。
FLTK から QT5 にいくつかのコードを移行していますが、OpenGL コンテキストに対応するグラフィカル デザインのウィジェットを取得できないようです。そのようなウィジェットは存在しますか?
OpenGLオプションを使用してVS2012x64をターゲットにして、公式ソースからQTを構築QT += opengl
し、project.proファイルに追加しようとしました。
Qt には QGLWidget がありますが、デザイナーで直接使用しないでください。代わりに、OpenGL ウィジェットを表示したい場所にレイアウトを配置する必要があります。paintGL
次に、何かを描画するには関数を上書きする必要があるため、QGLWidget をサブクラス化します。次に、setupUI()
呼び出しの後、カスタム GL ウィジェットをインスタンス化し、それをデザイナーに配置したレイアウトに追加します。layoutinstance->addWidget(…)
メインウィンドウ.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>335</width>
<height>191</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout"/>
</item>
</layout>
</widget>
<action name="actionQuit">
<property name="text">
<string>&Quit</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>
myglwidget.hh
#include <QGLWidget>
class MyGLWidget : public QGLWidget
{ //...
};
メインウィンドウ.hh
#include <QMainWindow>
#include "myglwidget.hh"
#include "mainwindow_ui.hh" // generated by uic
class MainWindow : public QMainWindow, Ui_MainWindow
{
MainWindow(QObject *parent = NULL) :
QMainWindow(parent)
{ // one would implement the constructor in the .cc file of course
this->setupUi(this);
glwidget = new MyGLWidget(this);
// using the this pointer to emphase the location of the
// member variable used.
// NOTE: In the UI we defined a layout names verticalLayout
this->verticalLayout->addWidget(glwidget);
}
protected:
MyGLWidget *glwidget;
};
重要なのは、レイアウトだけを使用することです。派生した OpenGL ウィジェットを追加する、UI の通常の通常のレイアウト。モーフなし、UI でのプロモーションなし!