我正在尝试使用QComboBox弹出功能在QPushButton上实现一个弹出菜单。
当我点击按钮时会出现一个菜单,但它们在按钮和菜单之间有一些空格。如何删除它?
当我将鼠标悬停在菜单中的某个项目上时,我还希望文本颜色保持不变。
我该怎么做?
我试图解决这个问题已经3天了,但没有通过CSS或任何QComboBox函数获得任何解决方案。
谢谢。
答案 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。