qq_25088799 2017-05-25 11:05 采纳率: 0%
浏览 833

Linux环境下QT菜单透明

![图片说明](https://img-ask.csdn.net/upload/201705/25/1495710295_818917.png)图片说明

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-05 22:19
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要使在Qt中显示的菜单变得完全透明,你需要在你的应用程序的main.cpp文件中进行以下更改:

    首先,确保你的项目已经包含了Qt库。如果你使用的是VS2019或更高版本,请确保你安装了Qt 5.14或者更高版本。

    然后,在你的main.cpp文件中添加以下代码:

    #include <QApplication>
    #include <QMenu>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QMenu menu;
        menu.setWindowFlags(Qt::FramelessWindowHint); // 设置为无边框窗口
        menu.setStyleSheet("background-color: transparent;"); // 设置背景颜色为透明
    
        QPushButton button = new QPushButton("Click me");
        button->move(30, 30);
    
        menu.addAction(button);
    
        menu.exec(QCursor::pos());
    
        return a.exec();
    }
    

    这段代码会创建一个带有按钮和标题栏的无边框窗口,并设置其背景颜色为透明。通过将setWindowFlags(Qt::FramelessWindowHint)setStyleSheet("background-color: transparent;")这两个方法应用到QMenu对象上,你可以实现这个效果。

    注意:由于Qt的窗口管理机制,可能无法直接改变窗口的大小,所以当用户点击按钮时,可能会看到一些边缘部分被遮挡。这通常可以通过调整布局管理器来解决,例如使用QVBoxLayout替换默认的QGridLayout等。

    最后,记得在你的main.cpp文件中包含QGuiApplication头文件,因为QApplication类继承自它。

    #include <QQmlApplicationEngine>
    #include <QGuiApplication>
    

    现在,你应该可以在Qt环境中看到一个透明的菜单窗口,其中包含一个按钮。

    评论

报告相同问题?