易踩的坑

问:为何使用QPalette::WindowQPalette::Background设置QTextEdit的背景样式却不生效?

答:_使用QPalette::Base代替即可。如下所示:

QPalette pal = ui->textEdit->palette();
pal.setBrush(QPalette::Base, Qt::green);
ui->textEdit->setPalette(pal);

运行效果如下:

问:为何按照方案来做,但QTextEdit背景样式却不生效?

答:可能原因较多,这里列出几种。

  1. 父类样式覆盖了本控件的样式。此时可设置本控件的背景为自动填充(不继承于父类):
ui->textEdit->setAutoFillBackground(true);
  1. 设置画刷样式时,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个问题。

  1. 图片无法自适应大小;
  2. 当书写的文字超过一屏时,编辑框需要翻页,此时会发现图片也跟着翻页。

这2个问题我未进行验证和探究,读者可自行尝试。

个人推荐采用调色板的方式,因为采用C++原生语言实现,更加通用。且不存在上述问题。

如何有效地设置QTextEdit的背景相关推荐

  1. 关于Qt5.14,设置QTextEdit添加背景图问题

    近期,我在编写一个手机版的手机记事本,在美化上花尽了功夫,特别是QTextEdit设置背景图上,我使用了setPalette一直无成,根据网上查询到的,使用了 方法一:设置Brush的方法设置没有效果 ...

  2. Android——设置布局的背景颜色

    //设置布局的背景颜色 linearLayout.setBackgroundColor(getResources().getColor(R.color.color_blue)); 要求版本API 16

  3. java文本框背景_background 设置文本框背景图

    background 属性的作用是给元素设置背景,它是一个复合属性,常用的子属性如下: background-color 指定元素的背景颜色. background-image 指定元素的背景图像. ...

  4. corners边框_安卓中设置(shape)圆角背景和边框(stroke)相关的问题

    最近开发的项目中使用的圆角背景和边框比较多,基本都是使用shape文件和.9图片实现的.但在实现的过程中也是会出现一些小问题,这篇随笔会总结下来其中遇到的问题. 一,圆角大小不一致 1,四周圆角都为1 ...

  5. PHP设置文本框背景透明度,如何给background-image设置透明度?

    如题,现在是没法改图片本身的透明度,该图片以 background-image 写在 css 里,不知道有没有办法给他设置透明度?div{ position: relative; } div:afte ...

  6. 改变窗口背景_办公软件操作技巧063:如何设置ppt母版背景

    在日常工作中,我们经常会做一些PPT演示文档,在制作过程中都会些添加背景图片用来美化修饰,这时如果逐张幻灯片去插入背景或复制粘贴图片,会很麻烦,而且图片也很容易被误操作修改,其实有更快捷且不易被修改的 ...

  7. 【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景

    众所周知,bing搜索网站首页每日会更新一张图片,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸. 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜索bing 找 ...

  8. [css] 如何使用css3实现一个div设置多张背景图片?

    [css] 如何使用css3实现一个div设置多张背景图片? background-image:url("1.jpg"),url("2.jpg"),url(&q ...

  9. android 4.2修改设置菜单的背景颜色

    设置中的背景主要来主题的设置, 在4.X后, android添加了新的主题: Holo 从Settings/AndroidManifest.xml中找到: Xml代码   <applicatio ...

最新文章

  1. TCP快速重传为什么是三次冗余ack,这个三次是怎么定下来的?
  2. 查看docker镜像的dockerfile脚本json信息
  3. [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
  4. 7-174 两个有序链表序列的合并 (20 分)
  5. python编程可以自学么-怎么能学习好python编程?有自学的方法吗?
  6. linux服务器磁盘陈列
  7. FreeSwitch Event Socket Command(事件套接字命令行)
  8. Axure工具概述以及Axure RP9的安装汉化和授权
  9. java入门到精通6版pdf_java从入门到精通第6章.pdf
  10. securecrt 终端VIM配色
  11. 湖南工大计算机学院大一分班,不懈奋斗,书写无悔青春 --中国矿业大学计算机学院14-05班获评校级“优良学分班”称号...
  12. 右键快捷菜单压缩文件的消失问题解决办法!
  13. cesium three性能比较_初探希捷Exos银河18 TB盘,容量和性能双双提升
  14. JVM学习笔记07-垃圾回收
  15. android悬浮窗组件,Android 悬浮窗,悬浮view功能实现
  16. 《那些年啊,那些事——一个程序员的奋斗史》——31
  17. 怎么用html制作满天星,html+js+css 实现满天星
  18. Axure 9 实战案例,中继器的应用 2,列表的交替色和悬停色
  19. Matlab用Copula模型进行蒙特卡洛(Monte Carlo)模拟和拟合股票收益数据分析
  20. 华硕fl8000u是什么型号_华硕fl8000u怎么样 华硕笔记本fl8000u配置及报价

热门文章

  1. 信息增益与信息增益率详解
  2. matlab网页视频流,使用Matlab读取视频流文件
  3. 圣思园——Java SE Lesson 4
  4. 关于 git 的用法
  5. Pycharm 报错 Environment location directory is not empty 解决
  6. 《论文写作》学习心得
  7. 安装部署WSUS服务器
  8. PCB设计新手入门须知
  9. 【概念辨析】二维数组传参的几种可能性
  10. Python恢复初始的pip list(清空所有包)