[英]Receiving mouse EnterEvent and LeaveEvent on multiple popup widgets in Qt5
[英]QT5 - multiple OpenGL widgets in the same window
我已经使用OpenGL ES开发了基本的图形引擎监视应用程序。 它绘制基本的2D几何。 我有兴趣将其移植到QT5以实现跨平台可比性。
我想将每个压力表变成具有其自身信号和插槽的单个小部件。 QT提供了一个很好的示例 ,说明如何制作OpenGL小部件。 但是,此方法为每个小部件创建一个新窗口。 是否有一种方法可以使每个量规成为其自己的小部件,并将它们全部绘制在同一窗口中?
QOpenGLWidget是一个小部件,因此您可以将其放置在另一个小部件中,在创建单个小部件的示例中,这就是窗口。 您可以创建一些QMainWindow,QDialog或QWidget并将它们放置在QOpenGLWidget中,以下是如何执行此操作的示例,只需将此main替换为main示例:
#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();
}
输出:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.