QT 信号已经绑定槽函数 但是槽函数没有响应

捌只米波 2016-11-18 05:51:57
VS2013+QT5
.h文件 定义:
public slots:
//鼠标事件
void mouseEvent(QSystemTrayIcon::ActivationReason reason);
//退出程序后删除托盘图标
void hide1();
//退出时结束服务进程
void ExitMonitorProcess();
//托盘右键操作呼出设置页面
void setEvent();
//托盘右键操作呼出个人中心
void taskEvent();

.cpp文件
//创建监听行为 构造函数内:
m_pTask = new QAction(QString::fromLocal8Bit("个人中心 (&R)"), this);
connect(m_pTask, SIGNAL(triggered()), qApp, SLOT(taskEvent()));
m_pSet = new QAction(QString::fromLocal8Bit("设置 (&I)"), this);
connect(m_pSet, SIGNAL(triggered()), qApp, SLOT(setEvent()));
m_pQuitAction = new QAction(QString::fromLocal8Bit("退出 (&Q)"), this);
connect(m_pQuitAction, SIGNAL(triggered()), this, SLOT(hide1()));


//托盘右键操作呼出个人中心
void CWJMainWindow::taskEvent()
{
QJsonObject sendjsonpart;
sendjsonpart.insert(QStringLiteral("MSGID"), WEB_SOCKET_3002);
QJsonDocument documentpack;
documentpack.setObject(sendjsonpart);
QString json_json(documentpack.toJson(QJsonDocument::Compact));
WebSocketServer::inobgect()->sendMessage(json_json);
}
//托盘右键操作呼出设置页面
void CWJMainWindow::setEvent()
{
QJsonObject sendjsonpart;
sendjsonpart.insert(QStringLiteral("MSGID"), WEB_SOCKET_3003);
QJsonDocument documentpack;
documentpack.setObject(sendjsonpart);
QString json_json(documentpack.toJson(QJsonDocument::Compact));
WebSocketServer::inobgect()->sendMessage(json_json);

//退出程序后删除托盘图标
void CWJMainWindow::hide1()
{
m_ptrayIcon->hide();

ExitMonitorProcess();

close();
}


其中hide1()函数可以成功调用。:taskEvent()与setEvent()调试过程中不会进到函数内,求大神解答?????
...全文
3105 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_28602183 2017-04-27
  • 打赏
  • 举报
回复
请问怎么解决这个moc没有更新的问题啊
捌只米波 2016-11-21
  • 打赏
  • 举报
回复 2
解决了,不是什么语法问题,只是在VS下用QT,Moc文件没有更新而已。第一次遇到这种问题,感谢大家。
捌只米波 2016-11-21
  • 打赏
  • 举报
回复
引用 1 楼 allen_00 的回复:
qApp换成this,你 可以看下connect的返回值是false还是ture来判断信号和槽有没有连接成功

改成this指针后connect的返回值依然是false 求解。。。
	m_pTask = new QAction(QString::fromLocal8Bit("个人中心 (&R)"), this);
bool a = connect(m_pTask, SIGNAL(triggered()), this, SLOT(taskEvent()));
m_pSet = new QAction(QString::fromLocal8Bit("设置 (&I)"), this);
bool b = connect(m_pSet, SIGNAL(triggered()), this, SLOT(setEvent()));
m_pQuitAction = new QAction(QString::fromLocal8Bit("退出 (&Q)"), this);
bool c = connect(m_pQuitAction, SIGNAL(triggered()), this, SLOT(hide1()));

其中c的值为true a、b均为false。
捌只米波 2016-11-21
  • 打赏
  • 举报
回复
引用 2 楼 u011012932 的回复:
接收信号的对象错了,qApp 换为 this。
改成this指针后connect的返回值依然是false 求解。。。
Little柯南 2016-11-21
  • 打赏
  • 举报
回复
楼上正解,没有把信号与槽接收对象弄明白,这里是this执行槽函数,对于qApp的宏,一般都是执行类似quit()或者exit()等等这种用,是用在整个应用的方面
一去丶二三里 2016-11-21
  • 打赏
  • 举报
回复
接收信号的对象错了,qApp 换为 this。
allen_00 2016-11-18
  • 打赏
  • 举报
回复
qApp换成this,你 可以看下connect的返回值是false还是ture来判断信号和槽有没有连接成功

21,438

社区成员

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

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