Qt:带有半透明背景的QMenu

4
我使用Windows操作系统,想要为QMenu设置样式表以使其具有半透明的背景。为此,我首先设置了FramelessWindowHint,然后设置了WA_TranslucentBackground属性。接着,我设置了自己的样式表,并使用popup方法显示菜单。菜单被正确绘制,但是它的行为很奇怪:一旦设置了FramelessWindowHint,即使在调用popup()方法之前,它也总是可见的。当其中一个条目被点击后,它不再隐藏自己。
以下是一个简单的示例:
#include <QApplication>
#include <QMenu>
#include <QPoint>
#include <QCursor>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMenu menu;
    menu.addAction("about", &a, SLOT(aboutQt()));
    menu.addAction("exit", &a, SLOT(quit()));
    menu.setWindowFlags(Qt::FramelessWindowHint);
    menu.setAttribute(Qt::WA_TranslucentBackground);
    menu.setStyleSheet("QMenu{background:rgba(255, 0, 0, 50%);}");
    menu.popup(QCursor::pos());
    return a.exec();
}
1个回答

2
menu.setWindowFlags(menu.windowFlags() | Qt::FramelessWindowHint);

这应该可以解决你的问题。现在,你已经清除了Qt设置的所有标志。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接