博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使QTextEdit背景透明(转)
阅读量:6091 次
发布时间:2019-06-20

本文共 1515 字,大约阅读时间需要 5 分钟。

前边的文章介绍了如何给QTextEdit加背景图片,但是由于图片也会跟着翻屏,所以用了一种折中的办法就是:将QTextEdit设置为透明,而后在其后边的窗口的该位置处刷上图片即可。  那这里就说一下如何让QTextEdit控件背景变为透明。

 

     正如上一篇文章所讲的那样,在Qt中所有问题都要分两种体系来讨论,一种是QWidget体系,一种则是QGraphicsWidget体系。此处也不例外。

 

   一: 对于QWidget体系而言:亦即用的都是QWidget以及其派生类。对于此处:亦即QTextEdit的父对象也是QWidget或其派生类。

那么我们要做的就是:让QTextEdit背景变为透明,而后在其后边的父窗口该位置处刷上图片。

 

    ①设置QTextEdit为背景透明:

        QPalette pl = iEdit->palette();

        pl.setBrush(QPalette::Base,QBrush(QColor(255,0,0,0)));

        iEdit->setPalette(pl);

 

        即:用完全透明的画刷来刷一下编辑框的背景即可!

 

        而其父窗口在该位置处刷图片,关键是注意这个父窗口是不是顶层窗口(其有无父窗口),若是则注意不能使用setStyleSheet()来刷(原因见文章)。

 

 

   二:对于QGraphicsWidget体系,则用如下方式来设置,这里我直接用代码了:

 

     MainWindow::MainWindow(QWidget *parent)

    : QGraphicsView(parent)
   {
      this->resize(360,640);
      iScene = new QGraphicsScene(0,0,360,640);

      iEdit = new QTextEdit();

      iEdit->resize(360,400);

 

     //下边这段给父view刷图片

     QPalette palette;
     palette.setBrush(this->backgroundRole(),QBrush(QImage(":/bmp/dou.jpg")));
     this->setPalette(palette);

 

     //此段负责设置该编辑框item背景透明

     palette.setBrush(QPalette::Base,QBrush(QColor(255,0,0,0)));

     iEdit->setPalette(palette);

     QGraphicsProxyWidget* widget = iScene->addWidget(iEdit);

     palette.setBrush(QPalette::Window,QBrush(QColor(255,0,0,0)));

     widget->setPalette(palette);

     this->setScene(iScene);
}

 

      可见,这其中还是有很大区别的,而且似乎有些地方难以理解,其实关键这里边牵扯两个问题,一个是QWidget体系和QGraphicsWidget体系的区别是什么?  一个是用样式表QPalette设置背景颜色/图片的两种方法的区别(亦即:QPalette的setBrush()函数的第一个参数是QPalette::Base形式 还是 ptr->backgrounRole() 的区别)。

 

      关于这两个问题, 我过会会写两外两篇文章来专门论述一下,但是上边代码你可以直接拷贝拿去用,没问题的。

 

      测试环境:Qt4.5.0 + VC2005

 

后补:

1:QWidget体系与QGraphicsWidget体系之间的区别

 

2:Qt中如何使用样式表QPalette以及相关注意事项

转载地址:http://ybmwa.baihongyu.com/

你可能感兴趣的文章
函数是对象-有属性有方法
查看>>
uva 10107 - What is the Median?
查看>>
Linux下基本栈溢出攻击【转】
查看>>
c# 连等算式都在做什么
查看>>
使用c:forEach 控制5个换行
查看>>
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
使用ansible工具部署ceph
查看>>
linux系列博文---->深入理解linux启动运行原理(一)
查看>>
Android反编译(一) 之反编译JAVA源码
查看>>
结合当前公司发展情况,技术团队情况,设计一个适合的技术团队绩效考核机制...
查看>>
python-45: opener 的使用
查看>>
cad图纸转换完成的pdf格式模糊应该如何操作?
查看>>
Struts2与Struts1区别
查看>>
网站内容禁止复制解决办法
查看>>
Qt多线程
查看>>
我的友情链接
查看>>
想说一点东西。。。。
查看>>
css知多少(8)——float上篇
查看>>
NLB网路负载均衡管理器详解
查看>>
水平添加滚动条
查看>>