一、问题

Linux系统下Qt窗口的透明效果成了黑色,但同样的代码在windows机子上有透明效果,主要是修改系统的配置,仅在centos6.3及其以上版本实验过。其他系统可以相应配置。

二、问题运行图

(1)Qt透明效果,centos下运行都会出现如下图1所示。

三、解决方法

(1)窗口透明,窗口上的控件不透明,其代码设置

  1. setAutoFillBackground(false);  //这个不设置的话就背景变黑
  2. setWindowFlags(Qt::FramelessWindowHint);
  3. setAttribute(Qt::WA_TranslucentBackground,true);
  4. //setWindowOpacity(1);  //窗口及控件都半透明,其取值为0-1(0是全透明,1是不透明)
  5. //setAttribute(Qt::WA_NoSystemBackground, true);
  6. //setStyleSheet("background-color:transparent;");
  7. //QWidget::setAttribute(Qt::WA_NoBackground, true);
  8. //QPalette pal = palette();
  9. //pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
  10. //setPalette(pal);

(2)Qt参考文档

Platform notes:

  • X11: This feature relies on the use of an X server that supports ARGB visuals and a compositing window manager.
  • Windows: The widget needs to have the Qt::FramelessWindowHintwindow flag set for the translucency to work.
平台注意事项:
       X11(linux):此特性依赖于能提供支持ARGB视觉效果和复合式视窗管理的X服务的功能开启。
       Windows:此控件需要设置窗口标志Qt::FramelessWindowHint才能开启透明功能。
接着修改Centos的配置,是透明效果生效。
(3)修改Centos配置
进入菜单栏的系统->首选项->桌面效果
修改为Complz,不过修改后系统会变得稍微有些卡,太耗内存了。
改动后的效果(透明)(截图的背景色是白色):

http://blog.csdn.net/taiyang1987912/article/details/37037657

CentOS下Qt窗口透明效果失效,成黑色背景的问题的更多相关文章

  1. centos 下 Qt Creator 的安装使用

    centos 下 Qt Creator 的安装使用 Qt 以其开源,免费,完全面向对象(很容易扩展),允许真正的组件编程以及可移植跨平台等诸多优势得到越来越多的开发人员的青睐.Qt Creator 是 ...

  2. centos 下Qt安装 mysql驱动(亲测可行)

    (前半部分没有试过,因为我的有mysql驱动,实在抱歉) 1.预防万一,先安装一下mysql-devel(一定要装!). 不安装的话后面编译会出现找不到-lmysqlclient的问题. 2. 开始编 ...

  3. QT实现透明效果的按钮

    QPushButton { color: rgb(0,88,152) background-color: rgba(97%,80%,9%,50%)}

  4. QQ2010如何开启透明效果皮肤

    QQ2010可在WIN7下实现皮肤透明效果. 腾讯已于近日发布了QQ2010的BETA版本,经笔者试验,可在WIN7下实现皮肤透明化效果. 设置如下: 1.先打开QQ皮肤控制面板,如下: 2.然后任选 ...

  5. QT下的几种透明效果(QPalette背景白色,窗口设置setWindowOpacity,QPainter使用Clear模式绘图)

    1.窗口整体透明,但是窗体上的控件不透明.    通过设置窗体的背景色来实现,将背景色设置为全透. QPalette pal = palette(); pal.setColor(QPalette::B ...

  6. QT下的几种透明效果(三种方法:调色板,透明度属性,自绘)

    1.窗口整体透明,但是窗体上的控件不透明.    通过设置窗体的背景色来实现,将背景色设置为全透.  QPalette pal = palette();  pal.setColor(QPalette: ...

  7. QT窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透

    qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透 窗口置顶qt 里是 setWindowFlags(Qt::WindowStaysOnTopHint)kde 里 ...

  8. 一些有用的 Emacs 配置(窗口快速切换、一键透明效果、任意位置删除整行等)

    本篇文章记录的是一些有用的 Emacs 配置,有些是自己原创,有些是借鉴别人(能记起来出处的我放了链接). 规定:C 代表 Ctrl,M 代表 Alt. 1.设置一次跳跃 n 行的快捷键 按 C-M- ...

  9. Qt编程—去掉标题栏和设置窗口透明用法

    学习Qt编程,有时候我们很想做出好看又比较炫的画面,这时就常用到qt上的一些技巧. 这里我以一个小例子来展示qt的这些技巧,此qt编程写的,如图:(去掉标题栏和设置窗口透明后) 代码实现部分: .h文 ...

随机推荐

  1. 非常华丽的jQuery/HTML5应用推荐

    jQuery确实是一个非常优秀的JavaScript框架,尤其是结合HTML5,更可以让网页变得生动有趣.今天向大家推荐一些非常华丽的jQuery/HTML5应用,废话不多说,直接看吧. 1.jQue ...

  2. C++中的string类(1)

    http://blog.sina.com.cn/s/blog_51409e8f01009h7g.html 前言: string 的角色1 string 使用1.1 充分使用string 操作符1.2 ...

  3. [Qt] IP地址输入框实现

    封装了一个ip地址的输入框.网络上下载了份代码,找不到哪里的了.经过修改之后,尽力让它的行为和windows的IP地址输入框的行为看起来像些.代码如下: //ipaddredit.h #ifndef ...

  4. 初学者使用IntellJ IDEA建立Struts2项目

    1.建立项目,打开IDEA,点击File——>new project,选择Java Module,点击Next 选中Web Application,Version选中3.0,选中create w ...

  5. WinXP 无线提示“区域中找不到无线网络”的一种可能原因!

    貌似WinXP还是无限经典,我也一直还在用,不知道哪天才会放弃.这次遇见的问题,或许也有XP爱好者也遇得见,记下点文字备忘.----------------------- 单调的切割线 ------- ...

  6. [Angular 2] Refactoring mutations to enforce immutable data in Angular 2

    When a Todo property updates, you still must create a new Array of Todos and assign a new reference. ...

  7. sql列转行

    1.需要实现一个单行的统计报表 思路先用一个union查出单列,然后再把单列转成单行 2.实现 SELECT MAX(CASE WHEN type = 1 THEN num ELSE 0 END) A ...

  8. Tomcat全攻略

    内容: 一:简单介绍 二:安装及配置 三:应用 四:综述 參考资料 关于作者 相关内容: TCP/IP 介绍 TCP/IP 介绍 !== End Related dW Content Area --& ...

  9. C# 泛型多种参数类型与多重约束 示例

    C# 泛型多种参数类型与多重约束 示例 interface IMyInterface { } class Dictionary<TKey, TVal> where TKey : IComp ...

  10. css变形几大属性

    1.transform: transform-function() * | none; transform-function: translate().scale().rotate().skew(). ...