如何在QPushButton上启用向下箭头?

时间:2014-07-24 20:27:12

标签: qt qpushbutton

使用QPushButton,您可以使用setMenu()方法添加菜单,然后在按钮上绘制向下箭头(取决于样式设置)。

是否可以通过其他方法启用相同向下箭头的绘制?我希望使用这种样式的按钮在单击时显示自定义弹出窗口小部件。

2 个答案:

答案 0 :(得分:0)

您可以使用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。

答案 1 :(得分:0)

我最终做的是向QPushButton添加一个空菜单,使其显示向下箭头,然后在aboutToShow()信号上显示我的弹出窗口小部件。唯一的问题是弹出窗口没有得到焦点,除非你点击它,这可以通过模拟鼠标点击here来解决。