2
我使用Windows,我想將樣式表設置爲QMenu以賦予其半透明背景。爲了這個工作,我首先設置了FramelessWindowHint,然後設置了WA_TranslucentBackground屬性。然後,我設置了我的樣式表並使用彈出方法顯示菜單。它被正確繪製,但它的行爲奇怪:只要它具有FramelessWindowHint,它總是可見的(甚至在調用popup()方法之前)。它的一個條目被點擊後,它不再隱藏自己。Qt:具有半透明背景的QMenu
這裏是一個簡約的例子:
#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();
}