ptqt5 设置窗口背景透明的方法
时间: 2024-12-24 13:01:59 浏览: 39
在Qt中,尤其是使用QMainWindow作为基础窗口的时候,设置窗口背景透明通常是通过`setWindowFlags()`函数和`Qt::WindowStaysOnTopHint`、`Qt::FramelessWindowHint`以及调整背景色来实现半透明效果。这里是一个简单的例子:
```cpp
#include <QApplication>
#include < QMainWindow >
#include < QWidget >
#include < QStyleFactory >
#include < QColorDialog>
class TransparentWindow : public QMainWindow {
Q_OBJECT
public:
explicit TransparentWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); // 窗口无边框且始终在最前面
setAttribute(Qt::WA_TranslucentBackground, true); // 设置窗口背景透明
QColor color = QColorDialog::getColor(); // 弹出颜色选择对话框获取颜色
if (!color.isValid()) return;
this->setStyleSheet("background-color: rgba(0, 0, 0, " + QString::number(color.alpha() / 255, 'f', 2) + ")"); // 使用rgba设置透明度
}
private slots:
void changeColor() {
QColor color = QColorDialog::getColor();
if (color.isValid())
this->setStyleSheet("background-color: rgba(0, 0, 0, " + QString::number(color.alpha() / 255, 'f', 2) + ")");
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
TransparentWindow window;
window.show();
return app.exec();
}
```
在这个示例中,你可以通过点击按钮或事件触发`changeColor`槽函数来改变窗口的透明度。
阅读全文
相关推荐


















