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、演示效果