【发布时间】:2018-08-24 22:51:57
【问题描述】:
当我尝试使用QWidget 和QPainter 绘图时,绘图非常滞后。我决定使用QOpenGLPaintDevice 和QOpenGLWidget 来加速绘图。但是形状的圆角与在常规小部件上绘制相比非常粗鲁。
QWidget:
QOpenGLWidget:
这是我如何设置 QOpenGLPaintDevice 的代码。
QOpenGLPaintDevice* device = nullptr;
void QOpenGLWorkspaceWidget::resizeGL(int w, int h) {
initDeviceIfNeed();
handleResize(this, w, h);
int ratio = devicePixelRatio();
device->setSize(QSize(w * ratio, h * ratio));
device->setDevicePixelRatio(ratio);
}
void QOpenGLWorkspaceWidget::initDeviceIfNeed() {
if (!device) {
device = new QOpenGLPaintDevice();
drawer->setPaintDevice(device);
}
}
void QOpenGLWorkspaceWidget::paintGL() {
initDeviceIfNeed();
glDisable(GL_DEPTH_TEST);
glClearColor(1, 1, 1, 1);
workspaceDrawer->draw();
}
【问题讨论】: