Qt源码分享(三)--自定义menu

关注微信公众号在菜单栏获取源码

image

这里分享下,Qt下面的自定义的menu。先上效果图。

image

我这个只是简单的做个demo,如果你想要更复杂的效果,就要重写QPushButton或者是其他的控件,原理都是一样的。

我贴出里面的重要代码:


void CustomMenu::initMenu()
{
    m_AppMenu = new QMenu(this);
    m_AppMenu->setStyleSheet(
    "QMenu {"
    "background-color:#FFFFFF;"
    "border: 2px solid #FFFFFF;"
    "width:120px;"
    "height:137px;"
    "}"

    "QMenu::separator {"
    "height: 1px; "
    "background: #D9DADB;"
    "}"
        );

        // 开始游戏
    QPushButton *btn = new QPushButton(tr("start game"), m_AppMenu);
    btn->setMaximumWidth(116);
    btn->setStyleSheet(button.arg("url(:/CustomMenu/res/menu_startup.png)"));
    QWidgetAction *widgetaction = new QWidgetAction(m_AppMenu);
    widgetaction->setDefaultWidget(btn);
    m_AppMenu->addAction(widgetaction);

    // 置顶
     btn = new QPushButton(tr("set top"), m_AppMenu);
     btn->setMaximumWidth(116);
     btn->setStyleSheet(button.arg("url(:/CustomMenu/res/menu_top.png)"));
     widgetaction = new QWidgetAction(m_AppMenu);
     widgetaction->setDefaultWidget(btn);
     m_AppMenu->addAction(widgetaction);

    // 创建快捷方式
    btn = new QPushButton(tr("create shortcut"), m_AppMenu);
    btn->setMaximumWidth(116);
    btn->setStyleSheet(button.arg("url(:/CustomMenu/res/menu_shortcut.png)"));
    widgetaction = new QWidgetAction(m_AppMenu);
    widgetaction->setDefaultWidget(btn);
    m_AppMenu->addAction(widgetaction);

    //加2px间距
    QLabel *firstLine = new QLabel();
    firstLine->setFixedSize(QSize(118, 2));
    widgetaction = new QWidgetAction(m_AppMenu);
    widgetaction->setDefaultWidget(firstLine);
    m_AppMenu->addAction(widgetaction);

    m_AppMenu->addSeparator();

    firstLine = new QLabel();
    firstLine->setFixedSize(QSize(118, 2));
    widgetaction = new QWidgetAction(m_AppMenu);
    widgetaction->setDefaultWidget(firstLine);
    m_AppMenu->addAction(widgetaction);

    // 删除游戏
    btn = new QPushButton(tr("delete game"), m_AppMenu);
    btn->setMaximumWidth(116);
    btn->setStyleSheet(button.arg(""));
    widgetaction = new QWidgetAction(m_AppMenu);
    widgetaction->setDefaultWidget(btn);
    m_AppMenu->addAction(widgetaction);
}

微信公众号回复源码,即可获取完整的项目源码。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 635672377@qq.com

文章标题:Qt源码分享(三)--自定义menu

文章字数:364

本文作者:刘世雄

发布时间:2020-06-03, 17:11:55

最后更新:2020-06-03, 09:15:20

原始链接:http://lsxcpp.com/2020/06/04/Qt%E6%BA%90%E7%A0%81%E5%88%86%E4%BA%AB%EF%BC%88%E4%B8%89%EF%BC%89-%E8%87%AA%E5%AE%9A%E4%B9%89menu/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录