使用QPushButton,您可以使用setMenu()方法添加菜单,然后在按钮上绘制向下箭头(取决于样式设置)。
是否可以通过其他方法启用相同向下箭头的绘制?我希望使用这种样式的按钮在单击时显示自定义弹出窗口小部件。
答案 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来解决。