我这段qt代码为啥不执行信号和槽函数呢是怎么回事呢?

louis_liux123 2014-06-16 10:54:56
QToolBar *toolBar =addToolBar(tr("Tool"));
QToolButton *btnZoomIn = new QToolButton( toolBar );
btnZoomIn->setText( "ZomIn" );
btnZoomIn->setIcon(QIcon(":images/zoomforward.png"));
btnZoomIn->setCheckable( true );
btnZoomIn->setToolButtonStyle( Qt::ToolButtonTextUnderIcon );
toolBar->addWidget( btnZoomIn );
connect(btnZoomIn,SIGNAL(toggled(bool)),this,SLOT(enableZoomMode(bool)));
小弟我咨询下各位大神,我这段代码为啥不执行信号和槽函数呢
...全文
658 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
louis_liux123 2014-06-18
  • 打赏
  • 举报
回复
引用 9 楼 wenwu1225 的回复:
QToolButton类没有triggered(bool)信号,是triggered(QAction *). enableZoomMode(bool)函数有没有在头文件的slots声明后面?
那样写没有问题,谢谢各位兄弟了,问题解决了
wenwu1225 2014-06-17
  • 打赏
  • 举报
回复
QToolButton类没有triggered(bool)信号,是triggered(QAction *). enableZoomMode(bool)函数有没有在头文件的slots声明后面?
foruok 2014-06-16
  • 打赏
  • 举报
回复
看运行有没有报错,另外看你那 this 代表的类声明,有没有放置 Q_OBJECT 宏。
louis_liux123 2014-06-16
  • 打赏
  • 举报
回复
引用 3 楼 foruok 的回复:
函数原型要匹配的兄弟,没有 triggered(bool) 这个信号,看我的帖子里说的信号原型。 还有,你运行时可以看到输出信息的,在应用程序输出窗口或控制台中,注意是否有报错。
QToolBar *toolBar =addToolBar(tr("Tool")); QToolButton *btnZoomIn = new QToolButton( toolBar ); btnZoomIn->setText( "ZomIn" ); btnZoomIn->setIcon(QIcon(":images/zoomforward.png")); btnZoomIn->setCheckable( true ); btnZoomIn->setToolButtonStyle( Qt::ToolButtonTextUnderIcon ); toolBar->addWidget( btnZoomIn ); connect(btnZoomIn,SIGNAL(toggled(bool)),this,SLOT(enableZoomMode(bool))); 这段代码我是照着qwt里面的例子修改的,甚至一模一样,它的例子就好使,我这就不行的
foruok 2014-06-16
  • 打赏
  • 举报
回复
函数原型要匹配的兄弟,没有 triggered(bool) 这个信号,看我的帖子里说的信号原型。 还有,你运行时可以看到输出信息的,在应用程序输出窗口或控制台中,注意是否有报错。
blpjzzzl 2014-06-16
  • 打赏
  • 举报
回复
引用 1 楼 foruok 的回复:
connect(btnZoomIn,SIGNAL(toggled(bool)),this,SLOT(enableZoomMode(bool)));
请使用QToolButton 的信号: void triggered(QAction * action)
我 把toggled(bool)换成triggered(bool)怎么也不响应啊,这个该怎么写啊
foruok 2014-06-16
  • 打赏
  • 举报
回复
connect(btnZoomIn,SIGNAL(toggled(bool)),this,SLOT(enableZoomMode(bool)));
请使用QToolButton 的信号: void triggered(QAction * action)
louis_liux123 2014-06-16
  • 打赏
  • 举报
回复
引用 7 楼 foruok 的回复:
一般这种错误,有两种情况: 1.没有在类的开始放置 Q_OBJECT 宏;加上就解决问题 2.qmake没有正确执行;请清理工程,找到构建目录,删除所有Makefile,然后重新构建即可。
哥们按照这个都做了,还是不好使啊,哥们加下qq方便吗?
foruok 2014-06-16
  • 打赏
  • 举报
回复
一般这种错误,有两种情况: 1.没有在类的开始放置 Q_OBJECT 宏;加上就解决问题 2.qmake没有正确执行;请清理工程,找到构建目录,删除所有Makefile,然后重新构建即可。
louis_liux123 2014-06-16
  • 打赏
  • 举报
回复
引用 5 楼 foruok 的回复:
看运行有没有报错,另外看你那 this 代表的类声明,有没有放置 Q_OBJECT 宏。
QObject::connect: No such slot MainWindow::enableZoomMode(bool) in F:\Source\dockwidget\mainwindow.cpp:78 QObject::connect: (receiver name: 'MainWindow') QObject::connect: No such slot MainWindow::enableZoomMode(bool) in F:\Source\dockwidget\mainwindow.cpp:86 QObject::connect: (receiver name: 'MainWindow') QObject::connect: No such signal QToolButton::triggered(bool) in F:\Source\dockwidget\mainwindow.cpp:94 QObject::connect: (receiver name: 'MainWindow') QObject::connect: No such slot MainWindow::enableZoomMode(bool) in F:\Source\dockwidget\mainwindow.cpp:103 QObject::connect: (receiver name: 'MainWindow') 这个是控制台报的错误

16,815

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧