将QGLWidget绘制到QWidget

时间:2016-11-23 14:19:39

标签: c++ qt

在Qt的hello gl example中,QGLWidget小部件的使用如下(我删除了滑块代码以简化)

glWidget = new GLWidget;
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addWidget(glWidget);
setLayout(mainLayout);

在这种情况下,QGLWidget涵盖了所有QWidget。 但在我的情况下,我需要绘制我所拥有的QWidget的有限区域。 我希望下面的虚拟绘图有助于解释我的需要。

_____________________________
|    ________________       |----> This is the widget 
|    |              |       |
|    |              |-------|--> QGLWidget should draw here
|    |______________|       |
|___________________________|

如何在示例中将GLWidget类绘制到封装GLWidget的QWidget类中的矩形?

1 个答案:

答案 0 :(得分:1)

如果你想在这个布局中显示这个小部件很容易。 您可以使用setContentsMargins函数执行此操作。

示例:

QWidget* myWidget = new QWidget;
myWidget->setStyleSheet("QWidget{ background: red; }");

QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addWidget(myWidget);
mainLayout->setContentsMargins(100,100,100,100);
setLayout(mainLayout);

查看:

enter image description here

当然,您应该根据您的小部件几何使用正确的边距值,如下所示:

mainLayout->setContentsMargins(this->width() / 2 ,this->height() / 2, 0, 0);

此代码将小部件放在小部件的右下角。