选择 QGraphicsItem
时可以调用 QGraphicsItem
类的 paint
方法进行绘制。paint
方法会调用 QGraphicsItem
的绘制子类(如 QGraphicsRectItem
、QGraphicsLineItem
、QGraphicsPolygonItem
等)的 paint
方法进行绘制。
可以通过以下代码示例来了解如何使用 paint
方法:
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsItem>
#include <QResizeEvent>
class MyGraphicsItem : public QGraphicsItem {
public:
MyGraphicsItem() {
setFlag(QGraphicsItem::ItemHasNoContents);
}
virtual QRectF boundingRect() const {
return QRectF(0, 0, 100, 100);
}
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
painter->setRenderHint(QPainter::Antialiasing);
painter->setBrush(Qt::blue);
painter->drawRect(boundingRect());
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setRenderHint(QPainter::Antialiasing);
MyGraphicsItem item;
scene.addItem(&item);
view.setViewportUpdateMode(QGraphicsView::SmartViewportUpdate);
view.setInteractive(true);
view.show();
return app.exec();
}
在这个示例中,我们创建了一个 MyGraphicsItem
类,继承自 QGraphicsItem
,并在绘制时调用 paint
方法进行绘制。paint
方法中使用 QPainter
进行绘制,可以设置各种绘制选项,如 setRenderHint
、setBrush
、drawRect
等。最后,在 main
函数中创建一个 QGraphicsScene
和 QGraphicsView
,将 MyGraphicsItem
添加到场景中,并显示视图。
领取专属 10元无门槛券
手把手带您无忧上云