如何在 Qmenu 中添加关闭按钮?

Posted

技术标签:

【中文标题】如何在 Qmenu 中添加关闭按钮?【英文标题】:How to add a close button to a Qmenu? 【发布时间】:2012-12-17 09:15:12 【问题描述】:

如何在下方菜单顶部添加关闭按钮?

我想要一个像 windows 一样的关闭按钮,在它下面我需要下面提到的 A 到 D 设置菜单。 如何做到这一点?

void MyMenu::cppSlot()
    
        xmenumain = new QMenu;
        xmenumain->
        xmenumain->addAction ( "A -> Setup" , this , SLOT (call_a()) );
        xmenumain->addAction ( "B -> Setup" , this , SLOT (call_b()) );
        xmenumain->addAction ( "C -> Setup" , this , SLOT (call_c()) );
        xmenumain->addAction ( "D -> Setup" , this , SLOT (call_d()) );
        xmenumain->popup( QCursor::pos() );
        //Change font and width
        xmenumain->setFont(QFont ("Courier", 10));
        xmenumain->setFixedWidth(250);
        //Colour setting
        QPalette palette=xmenumain->palette();
        palette.setColor(QPalette::Background, Qt::darkGray);
        xmenumain->setPalette(palette);

        //xmenumain->setAutoFillBackground(true);


        // Align the menu coordinates
        xmenumain->move(900,300);
        xmenumain->show();
        /*if(!(xmenumain->isEnabled()))
        
            xmenumain->show();
        */
    

【问题讨论】:

它会做什么,关闭菜单或关闭应用程序? 也许你可以使用QPushButton 然后QPushButton::setMenu 它应该关闭菜单 为什么要在 QMenu 上设置一个关闭按钮? QMenu 失去焦点后会自动隐藏。你可能想做一些不同于 QMenu(工具箱?)的东西 【参考方案1】:

首先,创建一个QWidgetAction。然后创建一个按钮,按照您想要的方式进行设置,并将其添加到QWidgetActionQWidgetAction::setDefaultWidget()。最后,使用QMenu::AddAction() 将QWidgetAction 添加到您的菜单(采用QAction 的重载;QWidgetAction 派生自QAction。)

【讨论】:

这不起作用。它创建一个具有不可见背景的菜单项。除非在“按照你想要的方式设置”中有更多的步骤比 setText/setIcon 更恶作剧。

以上是关于如何在 Qmenu 中添加关闭按钮?的主要内容,如果未能解决你的问题,请参考以下文章

HTML中如何让窗口在点击按钮关闭该窗口?

如何在输入中添加按钮[关闭]

如何在iFrame中添加原始关闭按钮?

在MFC生产的基本对话框界面中,只有关闭按钮,没有最大最小化按钮,如何给它添加一个最小化按钮?

c++单文档如何在点关闭按钮时出现提示框,必须是在窗口关闭前出现

如何添加完成按钮以关闭数字键盘