如何使QTextEdit背景透明

news/2024/10/30 9:36:00/

      前边的文章http://blog.csdn.net/NRC_DouNingBo/archive/2010/04/28/5540427.aspx介绍了如何给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()来刷(原因见文章http://blog.csdn.net/NRC_DouNingBo/archive/2010/05/07/5565212.aspx)。

 

 

   二:对于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体系之间的区别

http://blog.csdn.net/NRC_DouNingBo/archive/2010/05/09/5571149.aspx

 

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

http://blog.csdn.net/NRC_DouNingBo/archive/2010/05/09/5571187.aspx


http://www.ppmy.cn/news/214598.html

相关文章

MFC窗口透明化以及透明穿透

MFC编程时,有时候我们需要实现窗口透明化,可以通过SetLayeredWindowAttributes设置窗口透明色和透明度来实现窗口透明化。而要使窗口拥有透明效果,前提是窗口要有WS_EX_LAYERED扩展属性,需用SetWindowLong设置窗口支持拓展风格。 一、窗口透…

跨5合并dnf无限连接服务器,不妨一试!跨5等跨区卡登陆卡黑屏解决办法分享

今日我们怀着激动的心情,在10点登陆游戏(跨5),发现跨区并未更新,频道比原来还少了许多,登陆还。出现卡登陆和卡黑屏。 故障分析: 经过多次尝试,我们发现本次全服跨区更新,游戏客户端和服务器配置…

dnf一换线就服务器不稳定,DNF:史派克做事了!换线黑屏已解决,玩家点取消可返回其它频道...

地下城历经十年,装备换了一批又一批,全民紫装到了全民史诗,但不变的也有那就是“鬼剑士”与地下城,还有那备受吐槽的“掉线城”,策划因为这个一直背锅,只更新节日礼包,就不更新对应优化改版&…

dnf打开显示进入服务器黑屏,win7系统玩地下城与勇士(DNF)出现黑屏怎么办

地下城与勇士是一款2D卷轴式横版格斗过关网络游戏,深受广大游戏玩家喜爱,在游戏过程中难免遇到一些奇怪的问题,比如之前小编分享Win7系统玩地下城与勇士提示图表系统组件失败怎么办。但是最近有用户说win7 64位系统玩地下城与勇士(DNF)出现黑…

神州炫龙毁灭者DC pro 和 DD pro_1.05.11RHA3原厂BIOS

支持八代I3 8100 8350 ,八代I5 8500需要屏蔽针脚,如图

炫龙笔记本组合快捷键

快捷键的使用说明:F1---一键开强冷F2---一键锁触摸板F3---开启或关闭CPU智能睿频(超频) FNF1----关闭或开启触摸板FNF2----切换外接显示器FNF3----关闭无线wifiFNf4----开启或关闭摄像头FNF11---开启一键超频FNF12---开启或关闭键盘背光灯 转…

炫龙T50热键功能键

FNF1: 进入休眠模式 FNF2:锁定计算机 FNF3: 外接显示器调整 FNF4: 无线局域网开关 FNF5: 启用/禁用触摸板 FNF6:降低背光键盘亮度 FNF7:增加背光键盘亮度 FNF8:静音/取消静音…