4

FLTK から QT5 にいくつかのコードを移行していますが、OpenGL コンテキストに対応するグラフィカル デザインのウィジェットを取得できないようです。そのようなウィジェットは存在しますか?

OpenGLオプションを使用してVS2012x64をターゲットにして、公式ソースからQTを構築QT += openglし、project.proファイルに追加しようとしました。

4

1 に答える 1

5

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>&amp;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 でのプロモーションなし!

于 2013-02-06T23:16:47.363 に答える