使用QComboBox在QPushButton上添加菜单

时间:2014-02-02 14:23:12

标签: c++ html css qt user-interface

我正在尝试使用QComboBox弹出功能在QPushButton上实现一个弹出菜单。

当我点击按钮时会出现一个菜单,但它们在按钮和菜单之间有一些空格。如何删除它?

当我将鼠标悬停在菜单中的某个项目上时,我还希望文本颜色保持不变。

我该怎么做?

我试图解决这个问题已经3天了,但没有通过CSS或任何QComboBox函数获得任何解决方案。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用QToolButton代替QPushButton并向QToolButton添加操作。您应该创建自定义QWidgetAction以添加到弹出菜单。

这是示例QWidgetAction:

#include <QWidgetAction>

class  myCustomWidgetAction: public QWidgetAction
{
    Q_OBJECT
public:
    explicit myCustomWidgetAction(QWidget * parent);

protected:
    QWidget * createWidget(QWidget *parent);

};


myCustomWidgetAction::myCustomWidgetAction(QWidget * parent):QWidgetAction(parent) {
}
QWidget * myCustomWidgetAction::createWidget(QWidget *parent){
    myCustomWidget * widget=new myCustomWidget(parent);
    return widget;
}

然后,您可以将您的小部件添加到要在弹出菜单中显示的toolButton:

myCustomWidgetAction * widgetAction   = new myCustomWidgetAction(this);

ui->toolButton->addAction(widgetAction);

您的自定义窗口小部件可以是包含不同元素的列表,也可以是任何其他窗口小部件。您还可以将myCustomWidgetAction的多个实例添加到toolButton。