我有一个QGLWidget,我喜欢在上面附加一个QLabel,用于一些度量可视化(fps、对象数量等)。
为了进一步重用,我希望保持QGLWidget尽可能干净,不要在其中使用QGLWidget::renderText,而是使用带有这些度量的外部调试接口。
现在我有:
QVBoxLayout *l = new QVBoxLayout;
this->gl = new MyGLWidget;
l->addWidget(gl);
QLabel *fps = new QLabel;
fps->setText(QString("FPS"));
fps->setStyleSheet("QLabel { background-color : red; color : blue; }");
fps->setParent(gl);
this->setLayout(l);但什么也没出现..。当然,如果我将QLabel添加到QLayout::addWidget的布局中,我会看到它。但不是我想要的..。
一些想法?
发布于 2013-08-22 10:05:17
没有分配到布局,小部件不知道它应该在哪里绘制,如果您不显式地告诉它。您必须显式调用QWidget::setGeometry来定位它。
然而,在QGLWidget上放置常规的Qt小部件有一些优点。QGLWidget实际上创建了一个由顶层窗口亲生的子窗口。然而,常规的窗口小部件没有自己的、独立的子窗口,这意味着,从图形系统的角度来看,它们与顶层窗口本身处于相同的Z叠加级别上。而QGLWidget的实际子窗口具有较高的Z叠加水平。养育一个QLabel到QGLWidget应该把它放在正确的Z堆叠水平。但是,OpenGL绘图操作与Qt绘图操作不同,因此您在QGLWidget上的绘图可能会破坏QLabel。
简单地说,QGLWidget之所以有一个函数"drawText“是有原因的。
https://stackoverflow.com/questions/18359361
复制相似问题