当我尝试使用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();
}
答案 0 :(得分:0)
我在这里找到了答案
What steps are necessary to enable antialiasing when using a QPainter on a QGLWidget?
openGlWidget.setSamples(8)
和painter.setRenderHint(QPainter::Antialiasing)
完成了工作。