gpt4 book ai didi

opengl - 是否有适用于 QT5 的 Designer OpenGL 小部件?

转载 作者:行者123 更新时间:2023-12-05 01:10:38 25 4
gpt4 key购买 nike

我正在将一些代码从 FLTK 迁移到 QT5,但我似乎无法在图形设计中获得与 OpenGL 上下文相对应的小部件?这样的小部件存在吗?

我从官方来源构建了 QT,使用 OpenGL 选项针对 VS2012x64,并尝试添加 QT += opengl到我的 project.pro 文件。

最佳答案

Qt 有 QGLWidget,但您不应直接在设计器中使用它。相反,您应该在您希望 OpenGL 小部件出现的位置放置一个布局。然后你继承 QGLWidget,因为你必须覆盖 paintGL无论如何都可以绘制一些东西。然后在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;
};
关键是,您只使用布局。 UI 中的一个普通的常规布局,您可以向其中添加派生的 OpenGL 小部件。用户界面中没有变形,没有促销!

关于opengl - 是否有适用于 QT5 的 Designer OpenGL 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14740151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com