QOpenglWidget如何悬浮透明控件

QOpenglWidget上方固定一个QWidget窗口,设置QWidget样式为透明,但是窗口没有透明

  • ① 可以在创建 QWidget 时设置它的透明度,如下所示:
QWidget *widget = new QWidget(this);
widget->setWindowOpacity(0.5); // 设置窗口的透明度为 0.5,即半透明
  • ② 还可以使用 setStyleSheet() 函数设置 QWidget 的背景色,并使用透明度值来调整透明度,如下所示:
QWidget *widget = new QWidget(this);
widget->setStyleSheet("background-color: rgba(255, 255, 255, 0.5);"); // 设置背景色为半透明白色

这种方法设置的透明度仅对背景色有效,如果 QWidget 上还有其他控件,则不会受到影响。

  • ③ 要使 QWidget 上的所有控件都透明,你可以使用 setAttribute() 函数设置 QWidget 的 Qt::WA_TranslucentBackground 属性,如下所示:
QWidget *widget = new QWidget(this);
widget->setAttribute(Qt::WA_TranslucentBackground); // 设置 QWidget 的背景为透明

你就可以创建一个完全透明的 QWidget,并在其上方放置一个 QOpenglWidget。

  • ④ 你可以使用 setWindowFlags() 函数将 QWidget 设置为悬浮窗口,如下所示:
QWidget *widget = new QWidget(this);
widget->setWindowFlags(Qt::Window | Qt::FramelessWindowHint); // 设置 QWidget 为无边框悬浮窗口