【Qt】2D绘图之绘制文字 ╰半夏微凉° 2022-11-12 10:00 215阅读 0赞 ## 00. 目录 ## ### 文章目录 ### * * 00. 目录 * 01. 概述 * 02. 开发环境 * 03. 基本绘制 * 04. 使用范围绘制文字 * 05. 使用字体绘制文字 * 06. 附录 ## 01. 概述 ## Qt中除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函 数可以获取字体的信息,它返回QFontInfo类对象。在绘制文字时会默认使用抗锯齿。 ## 02. 开发环境 ## **Windows系统**:Windows10 **Qt版本**:Qt5.15或者Qt6 ## 03. 基本绘制 ## 程序示例 void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); painter.drawText(100, 100, "hello Qt"); } 执行结果 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlbmdqaW4yMDEwNDA0MjA1Ng_size_16_color_FFFFFF_t_70] 在(100, 100)的位置绘制了一个字符串。 ## 04. 使用范围绘制文字 ## 函数原型: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlbmdqaW4yMDEwNDA0MjA1Ng_size_16_color_FFFFFF_t_70 1] 第一个参数指定了绘制文字所在的矩形;第二个参数指定了文字在矩形中的对齐方式,它由Qt::AlignmentFlag枚举类型进行定义,不同对齐方式也可以使用“|”操作符同时使用,这里还可以使用Qt::TextFlag定义的其他一些标志,比如自动换行等;第三个参数就是所要绘制的文字,这里可以使用“\\n”来实现换行;第四个参数一般不用设置。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlbmdqaW4yMDEwNDA0MjA1Ng_size_16_color_FFFFFF_t_70 2] 程序示例 void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); //设置一个矩形 QRectF rect(50, 50, 300, 240); painter.drawRect(rect); painter.setPen(QColor(Qt::red)); //水平居中显示 垂直居中 painter.drawText(rect, Qt::AlignHCenter | Qt::AlignVCenter, "hello Qt"); } 执行结果 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlbmdqaW4yMDEwNDA0MjA1Ng_size_16_color_FFFFFF_t_70 3] ## 05. 使用字体绘制文字 ## 为了绘制漂亮的文字,可以使用QFont类来设置文字字体。 程序示例 void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); QFont font("黑体", 15, QFont::Bold, true); //设置下划线 font.setUnderline(true); //设置上划线 font.setOverline(true); //设置字母大小写 font.setCapitalization(QFont::SmallCaps); //设置字符间距 font.setLetterSpacing(QFont::AbsoluteSpacing, 10); //使用字体 painter.setFont(font); painter.setPen(Qt::blue); painter.drawText(120, 80, tr("hello qt")); painter.translate(50, 50); painter.rotate(90); painter.drawText(0, 0, tr("湖北武汉")); } 创建了QFont字体对象,使用的构造函数为QFont::QFont ( const QString & family,int pointSize = -1, int weight = -1, bool italic = false ),第一个参数设置字体的family属性,这里使用的字体族为黑体,可以使用QFontDatabase类来获取所支持的所有字体;第二个参数是点大小,默认大小为12;第三个参数为weight属性,这里使用了粗体;最后一个属性设置是否使用斜体。然后我们又使用了其他几个函数来设置字体的格式,最后调用setFont()函数来使用该字体,并使用drawText()函数的另一种重载形式在点(120, 80)绘制了文字。后面又将坐标系统平移并旋转,然后再次绘制了文字。运行程序,效果如下图所示。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlbmdqaW4yMDEwNDA0MjA1Ng_size_16_color_FFFFFF_t_70 4] ## 06. 附录 ## 源码下载:[【Qt】2D绘图之绘制文字.rar][Qt_2D_.rar] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlbmdqaW4yMDEwNDA0MjA1Ng_size_16_color_FFFFFF_t_70]: /images/20221022/cb4dd145886b44c0873f4f53d8f4158b.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlbmdqaW4yMDEwNDA0MjA1Ng_size_16_color_FFFFFF_t_70 1]: /images/20221022/32f195571b374ab6b30b3da874a0ceaa.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlbmdqaW4yMDEwNDA0MjA1Ng_size_16_color_FFFFFF_t_70 2]: /images/20221022/9bf3ab37abe242938745e1e18faff603.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlbmdqaW4yMDEwNDA0MjA1Ng_size_16_color_FFFFFF_t_70 3]: /images/20221022/329d8b98c1da4728a705fab0fb392ced.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlbmdqaW4yMDEwNDA0MjA1Ng_size_16_color_FFFFFF_t_70 4]: /images/20221022/9e8e0906b6bb43658a6685d85b72ecee.png [Qt_2D_.rar]: https://download.csdn.net/download/dengjin20104042056/16072282
相关 【Qt】2D绘图之双缓冲绘图 00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制矩形 04. 青旅半醒/ 2022年11月13日 00:48/ 0 赞/ 247 阅读
相关 【Qt】2D绘图之绘图中其它问题 00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 重绘事件 04. 怼烎@/ 2022年11月12日 14:57/ 0 赞/ 219 阅读
相关 【Qt】2D绘图之绘制图像(二) 00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制QImage图像 ╰半夏微凉°/ 2022年11月12日 13:46/ 0 赞/ 200 阅读
相关 【Qt】2D绘图之绘制图片 00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 简单绘制图片 04 - 日理万妓/ 2022年11月12日 10:58/ 0 赞/ 240 阅读
相关 【Qt】2D绘图之绘制路径 00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制简单路径 04 男娘i/ 2022年11月12日 10:52/ 0 赞/ 347 阅读
相关 【Qt】2D绘图之绘制文字 00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 基本绘制 04. ╰半夏微凉°/ 2022年11月12日 10:00/ 0 赞/ 216 阅读
相关 【Qt】2D绘图之绘制简单的图形 00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制图形 04. 拼搏现实的明天。/ 2022年11月12日 09:40/ 0 赞/ 231 阅读
相关 Qt:QPainter绘制文字 1、基本绘制 void MainWindow::paintEvent(QPaintEvent ) { QPainter painter(thi 清疚/ 2022年10月24日 11:45/ 0 赞/ 33 阅读
还没有评论,来说两句吧...