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

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

方法一:设置Brush的方法设置没有效果,也换过QPalette::Windows、QPalette::Background还是没有效果;

------------------------------------------------------------------

QPixmap Edbk("://Ico/background.jpg");

QPalette pal = ui->textEdit->palette();

pal.setBrush(QPalette::Base,QBrush(Edbk));

ui->textEdit->setPalette(pal);

方法二:然后尝试一下,下面的这种方式,先把TextEdit设置透明,在主窗口上贴图,但是要确定计算好需要贴图的Rect,还是没有效果,主要是下面的方式设置透明,没有效果。

------------------------------------------------------------------

QPalette pal = ui->textEdit->palette();

pal.setColor(QPalette::Base,QColor(255,0,0,0));

ui->textEdit->setPalette(pal);

方法三:理由上面方法二的思路,想办法设置TextEdit透明,我在网上也找到了下面这种设置透明的方法,想到TextEdit也是继承QWidget,下面两种设置透明的函数

------------------------------------------------------------------

ui->textEdit->setWindowOpacity();

ui->textEdit->setAttribute(Qt::WA_TranslucentBackground, true);

苦命啊,都没有效果!

上述的方法,我尝试了,都没有什么效果,也不知道是不是我忽略了什么,有知道的,欢迎评论区,大家一起寻找问题!。

------------------------------------------------------------------

最后通过QTextEdit设置setStyleSheet实现了背景透明的目的,把背景图画在背后的主窗口上,但是主窗口的布局动态发生调整的话,可能会影响效果,所以需要做一些画图的位置和矩形,做些动态处理,例如画图大小动态获取,当在不同设备上,窗口大小不同,动态获取窗口大小,通过一定关系式达到背景动态调整,当然如果左边或者右边使用过程中,会动态调整一些主窗口上的控件,这是在位置也需要做出一些动态调整。

代码如下

QPainter *p=new QPainter(this);
    ui->textEdit->setStyleSheet("background-color: rgb(255, 255, 255,60);");
    QImage img(":/Ico/background.png");
    QRect re(QPoint(ui->textEdit->geometry().x(),ui->textEdit->geometry().y()),ui->textEdit->size());
    p->drawImage(re,img);

看着效果还不错,虽然简陋些,精简美也是美啊

希望能对各位朋友有所帮助!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jlik学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值