Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用QToolButton_C++_Qt - Fatal编程技术网

C++ 如何使用QToolButton

C++ 如何使用QToolButton,c++,qt,C++,Qt,我正在尝试使用QToolBar创建一个下拉按钮。 我尝试使用以下策略: 问题是当我点击按钮时,它不会立即响应。需要单击几下才能显示菜单 我想我把代码放错地方了,但是我应该把它放在哪里呢 这是我的密码: Proto::Proto(QWidget *parent) : QMainWindow(parent), ui(new Ui::Proto) { ui->setupUi(this); QMenu *menu = new QMenu("Menu"); QWidgetAction *act

我正在尝试使用QToolBar创建一个下拉按钮。 我尝试使用以下策略:

问题是当我点击按钮时,它不会立即响应。需要单击几下才能显示菜单

我想我把代码放错地方了,但是我应该把它放在哪里呢

这是我的密码:

Proto::Proto(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Proto)
{
 ui->setupUi(this);
 QMenu *menu = new QMenu("Menu");
 QWidgetAction *action = new QWidgetAction(this);
 QPushButton *button2 = new QPushButton("Click me", menu);
 action->setDefaultWidget(button2);
 menu->addAction(action);
 ui->btnVolume->setMenu(menu);
}
拜托,有人能帮我吗?
提前感谢,

您似乎忘记了将按钮连接到插槽,或者至少,您发布的代码中没有显示该按钮。我刚刚添加了这样的connect语句

QPushButton *button2 = new QPushButton("Click me", menu);

connect(button2, SIGNAL(clicked()), SLOT(dosmth()));

action->setDefaultWidget(button2);
然后实现了这个简单的dosmth Q_槽


这段代码只创建了按钮,它不能处理右键单击?实际上是这样,因为它会在某个时候打开菜单。问题是,当用户单击按钮时,它没有响应。需要点击几下才能打开菜单…刚刚解决了它。。。非常简单:只添加了一行:ui->btnVolume->setPopupModeQToolButton::InstantPopup;谢谢你的支持。。。!
void MainWindow::dosmth() {
    qDebug() << "Hi";
}
Hi
Hi
Hi