C++ Linux中QToolButton上的事件处理问题

C++ Linux中QToolButton上的事件处理问题,c++,linux,qt,C++,Linux,Qt,我正在开发一个应用程序,我在其中添加了一个QToolBar对象,并在其上添加了QToolButton对象,我还将clicked()事件与之连接,但问题是鼠标单击事件在QToolButton上不起作用,但当我使用Tab将焦点放在该选项卡上时,空格按钮工作正常,但我希望鼠标单击。。有什么想法吗?这是代码 pToolBar = new QToolBar(this); pToolBar->setAllowedAreas(Qt::NoToolBarArea);//NoToolBarAreaAllT

我正在开发一个应用程序,我在其中添加了一个QToolBar对象,并在其上添加了QToolButton对象,我还将clicked()事件与之连接,但问题是鼠标单击事件在QToolButton上不起作用,但当我使用Tab将焦点放在该选项卡上时,空格按钮工作正常,但我希望鼠标单击。。有什么想法吗?这是代码

pToolBar = new QToolBar(this);

pToolBar->setAllowedAreas(Qt::NoToolBarArea);//NoToolBarAreaAllToolBarAreas
pToolBar->setFloatable(false);
pToolBar->setGeometry(300,0,160,30);

QToolButton *playButton=new QToolButton(pToolBar);

playButton->setIcon(QIcon("/images/play.png"));

playButton->setGeometry(10,0,40,30);

playButton->setToolTip("Play/Pause");

connect(playButton, SIGNAL(clicked()),SLOT(playButtonClicked()));

尝试将toolbutton显式添加到工具栏。以下代码非常适合我:

QToolBar *pToolBar = new QToolBar(this);

QToolButton *playButton=new QToolButton(pToolBar);
playButton->setIcon(QIcon("/images/play.png"));
playButton->setText("Play");
playButton->setToolTip("Play/Pause");
playButton->setGeometry(10,0,40,30);

QAction *a = pToolBar->addWidget(playButton);
a->setVisible(true);

connect(playButton, SIGNAL(clicked()),SLOT(playButtonClicked()));
您可能应该将QAction指针保存在某个位置,因为这是分配键盘快捷键、启用/禁用按钮等的最简单方法。如果这对您有效,请告诉我。如果没有,也许在这里发布一个完整的可编译示例将帮助我们帮助您。你应该能够得到一个小的演示程序,在一个或两个文件中显示你的问题


干杯,

当使用QToolBar::addAction()创建新的QAction实例或使用QToolBar::addAction()将现有操作添加到工具栏时,通常会创建工具按钮

例如:

QAction *newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this);
newAct->setShortcut(tr("Ctrl+N"));
newAct->setStatusTip(tr("Create a new file"));
connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
fileToolBar = addToolBar(tr("File"));
fileToolBar->addAction(newAct);
您可以使用触发信号,该信号在触发给定动作时发出

你的例子是:

QToolButton *playButton=new QToolButton(pToolBar);
connect(playButton, SIGNAL(triggered()),SLOT(playButtonClicked()));

正如jordenysp间接解释的那样,API是以QAction为中心的

当您单击按钮时会发生什么?你的老虎机有人叫吗?没有。。按钮的行为与按钮不同,它看起来没有被单击。。但当我按下空格键时,插槽被调用,它工作正常