Qt工作笔记-第三种方法在QGraphics上写文本
生活随笔
收集整理的這篇文章主要介紹了
Qt工作笔记-第三种方法在QGraphics上写文本
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
前面的兩種方法:
QGraphicsSimpleTextIte和QGraphicsTextItem
如下:
https://blog.csdn.net/qq78442761/article/details/81740672
?
下面說的是繼承法,重寫
painter,然后drawText
運(yùn)行截圖如下:
?
源碼如下:
mygraphicsitem.h
#ifndef MYGRAPHICSITEM_H #define MYGRAPHICSITEM_H#include <QGraphicsItem>class MyGraphicsItem : public QGraphicsItem { public:explicit MyGraphicsItem();QRectF boundingRect()const Q_DECL_OVERRIDE;void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) Q_DECL_OVERRIDE;qreal graphicsWidth;qreal graphicsHeight; };#endif // MYGRAPHICSITEM_Hwidget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE class QGraphicsScene; QT_END_NAMESPACEnamespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;QGraphicsScene *m_scene; };#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 <QPen> #include <QFont>MyGraphicsItem::MyGraphicsItem() {}QRectF MyGraphicsItem::boundingRect() const {qreal penWidth=1;return QRectF(0-penWidth/2,0-penWidth/2,graphicsWidth+penWidth,graphicsHeight+penWidth); }void MyGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {Q_UNUSED(option)Q_UNUSED(widget)painter->setFont(QFont("華文琥珀",12));painter->setPen(QPen(Qt::white));painter->drawText(20,20,"painter drawText English 中文"); }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);m_scene=new QGraphicsScene;ui->graphicsView->setBackgroundBrush(QBrush(Qt::black));ui->graphicsView->setScene(m_scene);MyGraphicsItem *item=new MyGraphicsItem;item->graphicsHeight=50;item->graphicsWidth=300;m_scene->addItem(item);item->setFlags(QGraphicsItem::ItemIsMovable|QGraphicsItem::ItemIsSelectable); }Widget::~Widget() {delete ui; }?
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的Qt工作笔记-第三种方法在QGraphics上写文本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt学习笔记-使用shape() 使得碰
- 下一篇: Qt文档阅读笔记-Visual Pare