如何使用带有C ++的qt在GLWidget上创建透明小部件

时间:2016-09-08 15:50:20

标签: c++ linux qt

我对Qt OpenGL编程很陌生,我在glWidget上创建透明小部件时遇到了问题。我在CentOs(linux)操作系统上使用Qt 4.2和C ++。我的项目的要求是:在屏幕上创建一个glwidget,其中包含一些绘图(圆形,形状等)。然后我们需要在openGL小部件上创建一些透明小部件,使得glWidget上的绘图应该在新的子小部件下可见。 我创建的主要文件是: 首先,我有一个主Widget(Form),并在主窗口小部件的顶部有一个子openGLWidget。现在的问题是,当我在glWidget上创建透明子窗口小部件时,系统桌面在子窗口小部件下可见,而不是在glWidget上绘制。我的代码的一部分是:

//constructor of MainWindow:
 // object of GLWidget
glWidget = new GLWidget();
glWidget ->setParent(this);
glWidget ->resize(1024,800);
glWidget ->show();

//creating object for child widget
childWidget = new Form(glWidget );
childWidget ->setParent(glWidget);
childWidget ->setGeometery(1024-320,300,300,300);
childWidget ->show();


//constructor of child widget which should be transparent over the above glWidget
widget.setupUi(this);
setWindowFlags(Qt::FrameLessWindowHint);
setAutoFillBackground(false);
setAttribute(Qt::WA_NoSystemBackground);
setAttribute(Qt::WA_TranslucentBackground);
setAttribute(Qt::WA_PaintOnScreen);
setAttribute(Qt::WA_TransparentForMouseEvents);
setAttribute(Qt::WA_ContentsPropagated);

任何帮助将不胜感激。

由于

0 个答案:

没有答案