QWidget 设置窗体背景透明

QWidget 设置窗体背景透明 实现如下效果

#include <QMainWindow>
#include <QtWidgets>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class CustomWidget : public QWidget {
public:
    CustomWidget(QWidget *parent = nullptr) : QWidget(parent) {
        QString qss = R"(
            background-color: rgba(255, 255, 255, 179);
            color:white;
            border:none;
        )";
        QVBoxLayout *layout = new QVBoxLayout(this);
        layout->setMargin(0);
        QRadioButton * radioButton= new QRadioButton("play demo");
        radioButton->setStyleSheet(R"(
            color:#000000;
            font-size:14px;
            min-height:200px;
        )");
        layout->addWidget(radioButton);
        setLayout(layout);
        resize(200, 100);
        setStyleSheet(qss);
        setWindowFlags(Qt::FramelessWindowHint);
        // 设置窗口属性以允许透明
        setAttribute(Qt::WA_TranslucentBackground);
    }
};


class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    void mousePressEvent(QMouseEvent *event) override {
        if (event->button() == Qt::RightButton) {
            CustomWidget *customWidget = new CustomWidget();
            customWidget->move(event->globalPos());
            customWidget->show();
        }
    }
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容