总结几种 Qt的绘图方式。
一,QML Canvas
(1),使用 Canvas 画布
(2),onPaint 中绘制
ApplicationWindow {
visible: true
width: 640
height: 480
Canvas {
id: mycanvas
width: 100
height: 200
anchors.centerIn: parent
onPaint: {
var ctx = getContext("2d");
ctx.fillStyle = Qt.rgba(1, 0, 0, 1);
ctx.fillRect(0, 0, width, height);
}
}
}
二,QML QQuickPaintedItem
(1),QML 负责交互
(2),绘制交给QQuickPaintedItem 中的QPainter
三,QWidget QPainter
(1),重载QWidget 的 paintEvent(QPaintEvent *)事件
(2),利用QPainter 进行绘制
void SimpleExampleWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setPen(Qt::blue);
painter.setFont(QFont("Arial", 30));
painter.drawText(rect(), Qt::AlignCenter, "Qt");
}
四,QWidget QGraphicsView 框架
#include <QtGui>
int main(int argc,char* argv[ ])
{
QApplication app(argc,argv);
QGraphicsScene *scene = new QGraphicsScene; //场景
QGraphicsRectItem *item = new QGraphicsRectItem(100,100,50,50); //矩形项
scene->addItem(item); //项添加到场景
QGraphicsView *view = new QGraphicsView; //视图
view->setScene(scene); //视图关联场景
view->show(); //显示视图
return app.exec();
}
参考:https://blog.csdn.net/p942005405/article/details/79891773
https://wizardforcel.gitbooks.io/qt-beginning/15.html