如何有效地设置QTextEdit的背景
易踩的坑
问:为何使用QPalette::Window
或QPalette::Background
设置QTextEdit
的背景样式却不生效?
答:_使用QPalette::Base
代替即可。如下所示:
QPalette pal = ui->textEdit->palette();
pal.setBrush(QPalette::Base, Qt::green);
ui->textEdit->setPalette(pal);
运行效果如下:
问:为何按照方案来做,但QTextEdit
背景样式却不生效?
答:可能原因较多,这里列出几种。
- 父类样式覆盖了本控件的样式。此时可设置本控件的背景为自动填充(不继承于父类):
ui->textEdit->setAutoFillBackground(true);
- 设置画刷样式时,ColorRole设置有误。通常网上搜索到的都是使用
QPalette::Background
,但这种方式是已被Qt废弃了的,应采用新方式QPalette::Base
。如下所示:
QPalette pal = ui->textEdit->palette();
pal->setBrush(QPalette::Base, QPixmap("C:/1.jpg"));
读者可自行在Qt的帮助文档中搜索ColorRole
,可发现如下内容:
翻译过来的大致意思是:QPalette::Background
值已被弃用,使用QPalette::Window
代替。
然而经过我的试验,对QTextEdit
类型的子控件使用:
QPalette pal = edit->palette();
pal.setBrush(QPalette:Window, Qt::red);
并无任何效果!
可能如ColorRole的描述文档所说,对于文本入口的控件大都使用QPalette::Base
方式来设置样式吧!且这种方式经我试验,证实是可行的。
方案
调色板
// 定义图片路径
const QString fileName = "C:/1.jpg";
QPalette pal = ui->textEdit->palette();// 设置画刷,填充背景图片,且调整了图片大小
pal.setBrush(QPalette::Base, QPixmap(fileName).scaled(ui->textEdit->size()));
// 取消继承父类的背景样式
ui->textEdit->setAutoFillBackground(true);
// QTextEdit设置调色板,即填充了背景图片
ui->textEdit->setPalette(pal);
实现效果如下:
也可用此方法设置背景颜色,只需要将pal.setBrush()
的参数修改即可。
QPalette pal = ui->textEdit->palette();// 设置画刷,填充背景颜色
pal.setBrush(QPalette::Base, Qt::red);
// 取消继承父类的背景样式
ui->textEdit->setAutoFillBackground(true);
// QTextEdit设置调色板,即填充了背景图片
ui->textEdit->setPalette(pal);
运行效果如下:
样式表
QString fileName = "C:/1.jpg";ui->textEdit->setStyleSheet("background-image: url(fileName)");
超文本标记语言
QString fileName = "C:/1.jpg";ui->textEdit->setHtml("<body background=" + fileName + "></body>");
总结
采用样式表和超文本标记语言的方式设置背景图片都存在2个问题。
- 图片无法自适应大小;
- 当书写的文字超过一屏时,编辑框需要翻页,此时会发现图片也跟着翻页。
这2个问题我未进行验证和探究,读者可自行尝试。
个人推荐采用调色板的方式,因为采用C++原生语言实现,更加通用。且不存在上述问题。
如何有效地设置QTextEdit的背景相关推荐
- 关于Qt5.14,设置QTextEdit添加背景图问题
近期,我在编写一个手机版的手机记事本,在美化上花尽了功夫,特别是QTextEdit设置背景图上,我使用了setPalette一直无成,根据网上查询到的,使用了 方法一:设置Brush的方法设置没有效果 ...
- Android——设置布局的背景颜色
//设置布局的背景颜色 linearLayout.setBackgroundColor(getResources().getColor(R.color.color_blue)); 要求版本API 16
- java文本框背景_background 设置文本框背景图
background 属性的作用是给元素设置背景,它是一个复合属性,常用的子属性如下: background-color 指定元素的背景颜色. background-image 指定元素的背景图像. ...
- corners边框_安卓中设置(shape)圆角背景和边框(stroke)相关的问题
最近开发的项目中使用的圆角背景和边框比较多,基本都是使用shape文件和.9图片实现的.但在实现的过程中也是会出现一些小问题,这篇随笔会总结下来其中遇到的问题. 一,圆角大小不一致 1,四周圆角都为1 ...
- PHP设置文本框背景透明度,如何给background-image设置透明度?
如题,现在是没法改图片本身的透明度,该图片以 background-image 写在 css 里,不知道有没有办法给他设置透明度?div{ position: relative; } div:afte ...
- 改变窗口背景_办公软件操作技巧063:如何设置ppt母版背景
在日常工作中,我们经常会做一些PPT演示文档,在制作过程中都会些添加背景图片用来美化修饰,这时如果逐张幻灯片去插入背景或复制粘贴图片,会很麻烦,而且图片也很容易被误操作修改,其实有更快捷且不易被修改的 ...
- 【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景
众所周知,bing搜索网站首页每日会更新一张图片,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸. 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜索bing 找 ...
- [css] 如何使用css3实现一个div设置多张背景图片?
[css] 如何使用css3实现一个div设置多张背景图片? background-image:url("1.jpg"),url("2.jpg"),url(&q ...
- android 4.2修改设置菜单的背景颜色
设置中的背景主要来主题的设置, 在4.X后, android添加了新的主题: Holo 从Settings/AndroidManifest.xml中找到: Xml代码 <applicatio ...
最新文章
- TCP快速重传为什么是三次冗余ack,这个三次是怎么定下来的?
- 查看docker镜像的dockerfile脚本json信息
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
- 7-174 两个有序链表序列的合并 (20 分)
- python编程可以自学么-怎么能学习好python编程?有自学的方法吗?
- linux服务器磁盘陈列
- FreeSwitch Event Socket Command(事件套接字命令行)
- Axure工具概述以及Axure RP9的安装汉化和授权
- java入门到精通6版pdf_java从入门到精通第6章.pdf
- securecrt 终端VIM配色
- 湖南工大计算机学院大一分班,不懈奋斗,书写无悔青春 --中国矿业大学计算机学院14-05班获评校级“优良学分班”称号...
- 右键快捷菜单压缩文件的消失问题解决办法!
- cesium three性能比较_初探希捷Exos银河18 TB盘,容量和性能双双提升
- JVM学习笔记07-垃圾回收
- android悬浮窗组件,Android 悬浮窗,悬浮view功能实现
- 《那些年啊,那些事——一个程序员的奋斗史》——31
- 怎么用html制作满天星,html+js+css 实现满天星
- Axure 9 实战案例,中继器的应用 2,列表的交替色和悬停色
- Matlab用Copula模型进行蒙特卡洛(Monte Carlo)模拟和拟合股票收益数据分析
- 华硕fl8000u是什么型号_华硕fl8000u怎么样 华硕笔记本fl8000u配置及报价