首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT5 -同一个窗口中的多个OpenGL小部件

QT5 -同一个窗口中的多个OpenGL小部件
EN

Stack Overflow用户
提问于 2017-12-01 20:01:12
回答 1查看 2K关注 0票数 1

我使用OpenGL ES开发了一个基本的图形引擎监控应用程序。它绘制了基本的二维几何。为了实现跨平台的可比性,我有兴趣将它移植到QT5中。

我想把每个量规变成一个单独的小部件,它有自己的信号和插槽。QT提供了一个很好的示例,介绍如何制作一个OpenGL小部件。但是,这个方法为每个小部件创建了一个新窗口。有一种方法可以让每个量规都是自己的小部件,并把它们都画在同一个窗口中吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-01 21:26:24

QOpenGLWidget是一个小部件,所以您可以将它放在另一个小部件中,在本例中,当创建单个小部件时,这将是窗口。您可以创建一些QMainWindow、QDialog或QWidget,并在其中放置一个QOpenGLWidget,下面是如何做到这一点的示例,只需将此main替换为主示例:

代码语言:javascript
复制
#include <QApplication>
#include <QDialog>
#include <QLabel>
#include <QSurfaceFormat>
#include <QVBoxLayout>

#ifndef QT_NO_OPENGL
#include "mainwidget.h"
#endif

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QSurfaceFormat format;
    format.setDepthBufferSize(24);
    QSurfaceFormat::setDefaultFormat(format);

    app.setApplicationName("cube");
    app.setApplicationVersion("0.1");
#ifndef QT_NO_OPENGL
    QDialog w;
    QHBoxLayout *lay = new QHBoxLayout(&w);
    QHBoxLayout *hlay = new QHBoxLayout;
    hlay->addWidget(new MainWidget(&w));
    hlay->addWidget(new MainWidget(&w));
    QVBoxLayout *vlay = new QVBoxLayout;
    vlay->addLayout(hlay);
    vlay->addWidget(new MainWidget(&w));
    lay->addWidget(new MainWidget(&w));
    lay->addLayout(vlay);
    w.resize(640, 480);
    w.show();
#else
    QLabel note("OpenGL Support required");
    note.show();
#endif
    return app.exec();
}

输出:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47600680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档