QT基础:QPainte 绘制文本并设置动态设置字体演示

QPainte  是QT里面的一个绘制控件,这里演示的是,用 QPainte  绘制一个文本,并通过 ui 上的  fontComboBox 控件 改变文本字体后触发 widget 槽函数 update() 来刷新界面,演示过于简单,适合初学者食用

1、创建一个QT 的 widget 项目

在 Ui 上画一个 fontComboBox 控件备用

 2、代码演示

代码写在 widget.cpp 中  头文件需要声明一个  void paintEvent(QPaintEvent * ev)

#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::paintEvent(QPaintEvent * ev)
{
    // 创建一个绘制对象,设置绘制设备(widget)
    QPainter p(this);
//    p.begin(this);

    // 设置画笔颜色
    p.setPen(QColor(255,0,0,100));

    // 设置字体
//    p.setFont(QFont(("黑体"),20));      // 手动设置字体

    // ui上画一个字体选择控件,将这个控件的字体获取到
    QFont f = ui->fontComboBox->currentFont();      // 创建一个字体对象,获取到UI中的字体选择控件
    f.setPixelSize(30);                             // 给字体对象设置大小
    p.setFont(f);                                   // 将字体对象传入绘制控件

    // 绘制 text  x,y,文本
    p.drawText(50,100,"QT基础 绘制文本");

    // 链接信号槽,将ui中的字体选择控件的改变索引信号,链接到weiget的 update 槽函数
    // 相当于字体选择控件发生改变后,widget 就刷新一下
    QObject::connect(ui>fontComboBox,SIGNAL(currentIndexChanged(int)),
                    this,SLOT(update()));
}

3、演示效果

猜你喜欢

转载自blog.csdn.net/qq_39085747/article/details/129642236