CentOS下Qt窗口透明效果失效,成黑色背景的问题

一、问题

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

二、问题运行图

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

三、解决方法

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

[html] view plain copy

  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

时间: 2024-10-26 08:39:07

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

vmware 调整centos下shell窗口分辨率

先安装好vmware-tools 用vim打开/boot/grub/grub.conf 找到 kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet  这行 在末尾加上vga=791   kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet  vga=791;则改变了屏幕分辨率. 具体分辨率查看下表: 具体请

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

1.窗口整体透明,但是窗体上的控件不透明. 通过设置窗体的背景色来实现,将背景色设置为全透. QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal); 试验效果: 窗体标题栏不透明: 窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明: 窗体客户区完全透明. 另外从网上看到的方法: setAttribute(Qt::WA_

QT下的几种透明效果

1.窗口整体透明,但是窗体上的控件不透明. 通过设置窗体的背景色来实现,将背景色设置为全透. QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal); 试验效果: 窗体标题栏不透明: 窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明: 窗体客户区完全透明. 另外从网上看到的方法: setAttribute(Qt::WA_

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

1.窗口整体透明,但是窗体上的控件不透明. 通过设置窗体的背景色来实现,将背景色设置为全透.  QPalette pal = palette();  pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));  setPalette(pal); 试验效果: 窗体标题栏不透明: 窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明: 窗体客户区完全透明. 另外从网上看到的方法:  setAttribute(Qt:

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

qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透 窗口置顶qt 里是 setWindowFlags(Qt::WindowStaysOnTopHint)kde 里是 KWindowSystem::setState(winId(), NET::KeepAbove)这样的置顶窗口不会处于全屏窗口的上方,如果需要真正的置顶,setWindowFlags(Qt::X11BypassWindowManagerHint) 可无视这个规则,但这样不会出现任务栏等,kimt

Android 编程下实现 Activity 的透明效果

实现方式一(使用系统透明样式) 通过配置 Activity 的样式来实现,在 AndroidManifest.xml 找到要实现透明效果的 Activity,在 Activity 的配置中添加如下的代码设置该 Activity 为透明样式,但这种实现方式只能实现纯透明的样式,无法调整透明度,所以这种实现方式有一定的局限性,但这种方式实现简单. android:theme="@android:style/Theme.Translucent" <activity android:na

QT窗口渐现效果,窗口震动效果,鼠标移动窗口

//窗口渐现效果void MainWindow::closeWindowAnimation() //关闭窗口效果 { QPropertyAnimation *animation = new QPropertyAnimation(this,"windowOpacity"); animation->setDuration(500); animation->setStartValue(1); animation->setEndValue(0); animation->

Centos下Hadoop安装配置

首先声明本人的配置是根据: http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html 进行修改的,因此在这里表示感谢. 在这里我自己对于原有的文章进行了修改. 原作的某些命令不适合在centos上进行使用. 以及一些不太注意的细节,在这里我提了出来. 首先在安装之前,应先建立hadoop的用户组和hadoop用户, 然后再进行以下的安装配置.这里是很多新手都忽略的地方. 1.2 环境说明 集群中包括4个节点:1个Master,

Qt 窗口移动实现

很多人觉得系统自带的标题栏太丑了,想要自绘一个标题栏,去掉了系统自带的标题栏后,就需要自己实现窗口移动,下面的代码就是实现窗口移动. widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QPoint> #include <QMouseEvent> //引用鼠标类头文件 class Widget : public QWidget { Q_OBJECT public: explici