qt客户端程序使用svg图片资源的几种方法
直接使用svg格式文件资源的情况
1. 直接在UI控件属性面板中选择部分支持icon图标的控件的icon来源,这样图标可以显示
2.给toolbutton添加样式
qproperty-icon: url(:/new/prefix1/resource/ball.svg); qproperty-iconSize: 300px 56px;
3.自定义一个qwidget 重写paintevent方法
void svgrenderwidget::paintEvent(QPaintEvent *event)
{
QPainter qPainter(this);
QSvgRenderer m_svgRender;
m_svgRender.load(QString(":/new/prefix1/resource/ball.svg"));
m_svgRender.render(&qPainter ,QRectF(,,this->size().width() ,this->size().height()));
}
使用svg转的矢量字体库的情况
使用https://www.iconfont.cn网站先建立图标项目,图标整理完以后,下载项目,找到css中对图标的编号
在QT资源中导入该ttf字体库资源。
1. 给pushbutton设置font和text。
int fontId = QFontDatabase::addApplicationFont(":/new/prefix1/resource/font/iconfont.ttf");
QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId);
QFont font;
font.setFamily(fontFamilies.at());
font.setPointSize();
ui->pushButton->setFont(font);
QString str = QString("%1%2").arg(QChar(0xe6f3)).arg("代码");
ui->pushButton->setText(str);
如有必要的话可以修改图标颜色
ui->pushButton_3->setStyleSheet("color: rgb(200 , 167 , 0);");
2. 在qwidget上显示图标序列,即绘制矢量文本显示出图片
void MainWindow::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event); QPainter painter(this);
painter.setPen(QColor("#000000"));
painter.setFont(this->font); painter.drawText(,, FontAwesomeIcons::Instance().getIconChar(FontAwesomeIcons::IconIdentity::icon_component));
painter.drawText(,, "component"); painter.drawText(,, FontAwesomeIcons::Instance().getIconChar(FontAwesomeIcons::IconIdentity::icon_code));
painter.drawText(,, "code"); }
注意:
qwidget的qss中使用svg格式的图片设置样式,并不能显示,我也没搞懂。在qwidget的样式表总输入background-image: url(:/new/prefix1/resource/ball.svg);
最终的测试效果

可运行demo程序的工程如下 (qt5.10 +windows)
链接:https://pan.baidu.com/s/1u4zVsYHg9tF_E7LbtWmUBA
提取码:jce9
qt客户端程序使用svg图片资源的几种方法的更多相关文章
- QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)
QT中获取选中的radioButton的两种方法 QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioBu ...
- VS编程,WPF中,获取鼠标相对于当前程序窗口的坐标的一种方法
原文:VS编程,WPF中,获取鼠标相对于当前程序窗口的坐标的一种方法 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/ ...
- QT中获取选中的radioButton的两种方法
QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioButton* pbtn = qobject_cast&l ...
- C# Windows程序窗口置前台的几种方法
这个是从别的地方看来的,放我这里 第一种:SetForegroundWindow,这个方法时灵时不灵.有人说,在自己的程序里把自己的窗口之前一般就不灵,而置前其它程序的窗口就灵.我觉得这是有原因的:当 ...
- 体温数据上传程序开发+获取时间的三种方法+DB Browser下载及安装
今天开始了体温上传程序的开发 今日所学: 获取时间 (21条消息) (转)安卓获取时间的三种方法_sharpeha的博客-CSDN博客_安卓获取时间 DB Browser安装教程 (20条消息) sq ...
- 将Java程序作成exe文件的几种方法【转载】
看到网上有同志的介绍将Java程序作成exe文件的方法,写的不错,但是也许是这篇文章完成的时间比较早,许多内容已经不合适了.我在这里补充几条: 一.exe4j 说明:exe4j可以将Jar文件制作成e ...
- C#程序读取MAC地址的五种方法(转)
public class GetMac { ///<summary> /// 根据截取ipconfig /all命令的输出流获取网卡Mac ///</summary> ///& ...
- 关于我在17号“一个查询任意年份中任意月份的天数”程序编写中的代码&第二种方法!
PS:下面的代码是我对于17号的练习题的一些新的看法(其实就是从另一个角度思考问题) package day20180917;import java.util.Scanner;//导包public c ...
- 微信小程序页面跳转的四种方法
wx.navigateTo({}) ,保留当前页面,跳转到应用内的某个页面,使用 wx.navigateBack 可以返回; 示例: 1 wx.navigateTo({ 2 url:'../test/ ...
随机推荐
- linux下配置vnc-server 和gnome-session
机器比较老,安装时间也十分久远,所以也不知道实验室系统当时是不是完全安装,最近需要使用vnc登录显示界面,结果问题就来了...没有安装vnc-server. (1)机器系统是rhel6.2的,所以就从 ...
- css3实现左右div高度自适应且内容居中对齐
主要运用了css3的弹层布局,直接上代码: 效果:左边盒子宽度固定.内容居中对齐.与右侧盒子高度相等,右侧自动缩放 html: <div class="main"> & ...
- Spring中常见的设计模式——适配器模式
一.适配器模式的应用场景 适配器模式(Adapter Pattern)是指将一个类的接口转换成用户期待的另一个接口,使原本接口不兼容的类可以一起工作,属于构造设计模式. 适配器适用于以下几种业务场景: ...
- BFT-SMaRt:用Java做节点间的可靠信道
目录 一.引子 二.名词统一 1. 节点id 2. 节点 3. 本地节点 4. 配置域 5. TTP 6. 陌生域 三.节点服务类 四.节点通信系统概览 五.节点通信层准备 1. 创建socket服务 ...
- python切片(获取一个子列表(数组))
切片: 切片指从现有列表中,获取一个子列表 返回一个新列表,不影响原列表. 下标以 0 开始: list = ['红','绿','蓝','白','黑','黄','青']# 下标 0 1 2 3 4 5 ...
- 用Django自动生成表遇到问题
因为以前在数据库中已经生成过Django 叫App01下的表,所以无法生成,在数据库中执行这个命令 DELETE FROM django_migrations WHERE app='App01';然后 ...
- 【Java并发基础】Java内存模型解决有序性和可见性
前言 解决并发编程中的可见性和有序性问题最直接的方法就是禁用CPU缓存和编译器的优化.但是,禁用这两者又会影响程序性能.于是我们要做的是按需禁用CPU缓存和编译器的优化. 如何按需禁用CPU缓存和编译 ...
- 执行sql中的 函数,function
CREATE FUNCTION [dbo].[GetWeight] ( ,)--重量/体积重 ) ,) as begin --顺丰重量/体积重以0.5kg为单位向上取值(小数点后两位4舍5入) ,) ...
- 依赖注入之IConfiguration
public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; ...
- 使用RobotFramework的DataBaseLibrary(Java实现)
RobotFramework能用Python和Jython两条腿走路.但有的时候你得选一条.今天就碰上个问题,为了整合其它模块必须用Java实现的DataBaseLibrary 其实实它很简单,记录步 ...