Qt文档阅读笔记-QGraphicsItem::paint中QStyleOptionGraphicsItem *option的进一步认识
生活随笔
收集整理的這篇文章主要介紹了
Qt文档阅读笔记-QGraphicsItem::paint中QStyleOptionGraphicsItem *option的进一步认识
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
官方解析
painter : 此參數用于繪圖;
option : 提供了item的風格,比如item的狀態,曝光度以及詳細的信息;
widget : 想畫到哪個widget上,如果要畫在緩存區上,這個參數一般填0;
博主例子
運行截圖如下:
源碼如下:
mygraphicsitem.h
#ifndef MYGRAPHICSITEM_H #define MYGRAPHICSITEM_H#include <QGraphicsItem>class MyGraphicsItem : public QGraphicsItem { public:MyGraphicsItem(QGraphicsItem *parent = 0);protected:QRectF boundingRect() const Q_DECL_OVERRIDE;void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) Q_DECL_OVERRIDE;private:int m_width;int m_height; };#endif // MYGRAPHICSITEM_Hwidget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui; };#endif // WIDGET_Hmain.cpp
#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }mygraphicsitem.cpp
#include "mygraphicsitem.h" #include <QPainter> #include <QStyleOptionGraphicsItem>MyGraphicsItem::MyGraphicsItem(QGraphicsItem *parent):QGraphicsItem(parent) {m_width = 100;m_height = 100; }QRectF MyGraphicsItem::boundingRect() const {qreal penWidth = 1;return QRectF(0-penWidth/2, 0-penWidth/2, m_width+penWidth, m_height+penWidth); }void MyGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {Q_UNUSED(widget)painter->save();if(option->state & QStyle::State_Selected){painter->setPen(QPen(Qt::blue, 5));}else{painter->setPen(QPen(Qt::red,5));}painter->drawRect(0, 0, m_width, m_height);painter->restore(); }widget.cpp
#include "widget.h" #include "ui_widget.h" #include "mygraphicsitem.h"#include <QGraphicsScene>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);ui->graphicsView->setScene(new QGraphicsScene);MyGraphicsItem *item = new MyGraphicsItem;ui->graphicsView->scene()->addItem(item);item->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); }Widget::~Widget() {delete ui; }?
總結
以上是生活随笔為你收集整理的Qt文档阅读笔记-QGraphicsItem::paint中QStyleOptionGraphicsItem *option的进一步认识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-发送端发送Json格式的数
- 下一篇: Qt多线程-QThreadPool线程池