c++ - Linux 中 QToolButton 的事件处理问题

标签 c++ linux qt

我正在开发一个应用程序,我在其中添加了一个 QToolBar 对象,并在其上添加了 QToolButton 对象,我还连接了 clicked() 事件,但问题是鼠标点击事件没有在 QToolButton 上工作,但是当我使用 Tab 将焦点放在 QToolButton 上时,空格键可以正常工作,但我希望通过鼠标单击它。有什么想法吗?这是代码。

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()));

最佳答案

工具按钮通常在使用 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);

您可以使用triggered 信号,当给定的 Action 被触发时会发出此信号。

你的例子:

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

关于c++ - Linux 中 QToolButton 的事件处理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1377679/

相关文章:

php - 将变量从 php 传递到 bash

c++:允许临时对象调用非常量成员函数的设计理念是什么?

c++ - 在 Arduino 上执行多个函数/命令

C++如何使模板化代码更清晰

linux - 将 PostgreSQL 数据目录从 Solaris 移动到 Linux

qt - 如何在 Qt3D 中改变光线

c++ - 递归函数如何对二叉树进行运算?

linux - 如何为 Azure LInux VM 中托管的网站分配域?

c++ - qml + 主从

multithreading - 带有成员函数的 QtConcurrent::map() = 无法编译