我正在开发一个应用程序,我已经在其中添加了一个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()));
发布于 2009-09-04 05:28:46
工具按钮通常是在使用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()));
发布于 2009-09-04 05:20:17
尝试显式地将工具按钮添加到工具栏。下面的代码非常适合我:
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指针保存在某个地方,因为这是分配键盘快捷键,启用/禁用按钮等的最简单方法。让我知道这是否适用于你。如果没有,也许在这里发布一个完整的可编译示例会对我们有所帮助。
干杯,
发布于 2009-09-06 00:53:43
正如jordenysp间接解释的那样,API是以QAction为中心的。
https://stackoverflow.com/questions/1377679
复制相似问题