Qt之 QPainter:绘制文字

http://shouce.jb51.net/qt-beginning/17.html

1、基本绘制

void MainWindow::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.drawText(100, 100, "qter.org_yafeilinux");
}

d9906a56ae3f1d8e10e73088c612a5e0ca0.jpg

2、控制文字的位置

F1:drawText

/* painter.drawText(rect, Qt::AlignCenter, tr("Qt\nProject"));
     * rect:文本所在矩形区域
     * Qt::AlignCenter:对齐方式,由Qt::AlignmentFlag枚举变量进行定义,不同对齐方式也可以使用|操作符同时使用,这里还可以使用Qt::TextFlag定义的其他一些标志,比如自动换行等
     *  tr("Qt\nProject"):所要绘制的文字,可以使用\n来实现换行
    */

void MainWindow::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QRectF rect(20, 20, 300, 200);

    painter.drawRect(rect);  //为了更直观地看到字体的位置,我们绘制出这个矩形

    painter.setPen(QColor(Qt::red));
    painter.drawText(rect, Qt::AlignHCenter, "Qt\nProject");//字体水平居中
}

8f4c4df0a415d6e33f55da4497e8b48e029.jpg

3、QFont类来设置文字字体

#include <QPainter>
#include <QFont>
void MainWindow::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QRectF rect(20, 20, 300, 200);

    painter.drawRect(rect);  //为了更直观地看到字体的位置,我们绘制出这个矩形

    painter.setPen(QColor(Qt::red));
    QFont font("宋体", 15, QFont::Bold, true);   //字体,大小,粗体,斜体
    font.setCapitalization(QFont::Capitalize);   //设置字母大小写
//    font.setUnderline(true); //设置下划线
//    font.setOverline(true); //设置上划线
   // font.setLetterSpacing(QFont::AbsoluteSpacing, 10); //设置字符间的间距
    painter.setFont(font);
    painter.drawText(rect, Qt::AlignHCenter, "qt\nproject");//字体水平居中
}

64ba84e7baa73d750ec72109ebce7417376.jpg

5、

#include <QPainter>
#include <QFont>
void MainWindow::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QRectF rect(20, 20, 300, 200);

    painter.drawRect(rect);  //为了更直观地看到字体的位置,我们绘制出这个矩形

    QFont font("宋体", 15, QFont::Bold, true);   //字体,大小,粗体,斜体
    painter.setFont(font);
    painter.setPen(QColor(Qt::red));
    painter.drawText(rect, Qt::AlignHCenter, "qt\nproject");//字体水平居中
    painter.translate(50, 50);
    painter.rotate(90);
    painter.drawText(0, 0, tr("helloqt"));
}

f555ed0b94a164a4824794061e67b5eab7b.jpg

转载于:https://my.oschina.net/u/3919756/blog/1942363

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值