7

我有一个带有半透明背景和圆形边缘(边框半径)的 QMenu。不幸的是,Windows 7 为这个菜单绘制了一个阴影,它不适合圆角。它是为普通矩形菜单绘制的阴影。

有没有一种方法可以完全禁用 QMenu 的绘制阴影,或者有一种方法可以使阴影适合圆形边缘?

这是它发生的简约示例:

#include <QApplication>
#include <QPushButton>
#include <QMenu>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QPushButton b("press me");
    QMenu m;
    m.addAction("hello"); m.addAction("world");
    m.setWindowFlags(m.windowFlags() | Qt::FramelessWindowHint);
    m.setAttribute(Qt::WA_TranslucentBackground);
    m.setStyleSheet("background:rgba(255,0,0,50%); border-radius:5px;");
    b.setMenu(&m);
    b.show();
    return a.exec();
}
4

1 回答 1

5

这应该这样做:

w.setWindowFlags(w.windowFlags() | Qt::NoDropShadowWindowHint);
于 2016-10-02T22:48:53.770 回答