Qt设置窗口透明,置顶

  1. 设置窗口透明度,子控件也会透明
  2. 设置窗口完全透明,子控件存在,并且不透明(标题栏去除)
  3. QT 去掉标题栏和去掉标题栏后移动窗口
  4. 置顶:setWindowFlags(Qt::WindowStaysOnTopHint);
  5. 局部透明,未编辑,自行百度

一、设置窗口透明度,子控件也会透明

  • setWindowOpacity(1);设置窗口透明度,1不透明,0透明。子控件也会透明
  • 使用 paintEvent 绘图事件 并没有透明。。。。。
    void paintEvent(QPaintEvent *event);
 setAttribute(Qt::WA_TranslucentBackground, true);
 QPainter painter(this);
 painter.fillRect(this->rect(), QColor(255, 255, 0, 200));

二、设置窗口完全透明,子控件存在,并且不透明

1. 先上代码,三行搞定,来源链接

this->setWindowFlags(Qt::FramelessWindowHint);//去除顶端状态栏
this->setWindowOpacity(1);//这行没啥用
this->setAttribute(Qt::WA_TranslucentBackground);//设置窗口透明属性

2. Qt窗体设置Qt::WA_TranslucentBackground为全黑的原因,来源链接

  • 4.5版本发行以后,可以设置窗口属性Qt::WA_TranslucentBackground来设定该窗口透明显示,但是有一个问题,就是如果该窗口是个top level窗口,就会有标题栏(title bar), 在windows平台下,如果不把这个标题栏去掉(设置Qt::FramelessWindowHint 标志位就会去掉标题栏),那么将不会是透明效果,而是背景为全黑。

运行中每次修改完属性,调用一下show(),不然会消失

  • 用setWindowFlags()修改的时候

3.QT 去掉标题栏和去掉标题栏后移动窗口,来源链接

你可能感兴趣的:(Qt)