qt自定义槽函数不起作用

本来可以实现的,不懂为什么不行了。贴代码:
这样写 void Userinfo::on_closeBtn1_clicked() 和 connect(ui->closeBtn1,SIGNAL(clicked()),this,SLOT( closeBtn1_clicked() ));//closeBtn1_clicked()是新的槽函数................................这两种都不行
但是connect(ui->closeBtn1,SIGNAL(clicked()),this,SLOT( close() ));这样写又可以,折腾了好久都不懂为什么。新手求大神解答

你定义的这个函数

void closeBtn1_clicked() ;

一定要在前面添加Q_SLOT 宏表示这个是一个槽函数,否则系统无法执行关联操作。

或者在定义的时候加入下面标记也可以:

1、 Q_SLOT void closeBtn1_clicked() ;

或者

private slots:
void closeBtn1_clicked() ;

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-09-25
源代码截个清晰图看看吧追问

这是一个新的窗口,只有btn这个控件,代码也就这些,我在头文件也定义了槽函数,感觉这不是逻辑问题,是不是少了什么库。
我现在新增一个dialog界面,然后直接在main.cpp里show出来,也会报错。
LNK2019: 无法解析的外部符号 "public: virtual __thiscall

就是换到这台机子就有点问题

追答

可能是你没装好吧……删干净重装吧。我的Qt有时候也会抽风,平白无故的出错,同一个程序,在第一个工程项目里就一直失败,新开一个项目,粘贴过去就成功运行了…这才尴尬

本回答被提问者采纳

qt自定义槽函数不起作用
你定义的这个函数 void closeBtn1_clicked() ;一定要在前面添加Q_SLOT 宏表示这个是一个槽函数,否则系统无法执行关联操作。或者在定义的时候加入下面标记也可以:1、 Q_SLOT void closeBtn1_clicked() ;或者 private slots:void closeBtn1_clicked() ;...

自己定义的槽函数是不是哪里不对了,为什么不能执行
Qt?一般来说自定义槽(SLOT)和其它函数没什么两样,它的特点在于能和消息(SIGNAL)连接起来发挥作用

Qt中,为什么我的槽函数不响应?
首先建议你采取Qt4的写法,在定义槽函数时,加入public slots:、signals 然后,main函数中,在定义对象detect时,建议采取detect[100][100]的数组形式,因为你现在是要将每一个按钮与槽函数一一连接 还不行的话,建议重新码一遍代码,先从最简单的槽开始,一点一点加大难度,这样也方便分析出究竟是哪里出...

在QT里面信号和槽已经建立了,但是却没有用,这是为什么?
跟踪调试一下,看看是没有发射信号,还是信号发射后,槽函数没有被执行,或者是槽函数没有正确的执行.

为什么我用qt读取串口设置的信号和槽函数不触发
进程肯定不会产生了。Qt的信号槽是个很复杂的机制,哥大致给你介绍一下Qt的信号槽既可以同步触发,也可以异步触发。当你进行connect的时候,实际上还有第五个参数(可以自己看SDK的介绍)。如果说是默认的,那么要看信号和槽是否属于同一个线程......

qt中用信号和槽导致程序挂掉,如何解决?
在多线程环境下,共享资源的不当操作会导致程序崩溃。通过互斥锁或读写锁实现同步,确保数据安全。四、内存泄漏 在槽函数内分配的内存未释放,形成内存泄漏。使用智能指针或手动管理内存,确保所有动态内存得到正确释放。总结:程序异常多因逻辑或内存管理不当。针对Qt中信号槽问题,采取相应解决措施,确保程序...

qt中添加查找槽的时候ui::dialog定义找不到是什么原因
我的也常出现这种情况,添加不来槽函数。清除工程,关闭工程,然后就行了。你试试看!

qt的信号与槽可以用自定义函数吗
可不带\/\/-- 下面函数是自定义的槽函数,需要写实现方法 --\/\/slots: void sltTestFunc(int nCnt) { qDebug() << "connect the signal: " << nCnt; }};\/\/ 然后使用MyClass *test1 = new MyClass();MyClass *test2 = new MyClass();connect(test1, SIGNAL(signalTest(int))...

qt定义槽函数时无法使用show以及setText?
在头文件声明为曹函数的前面是需要这样写的 public slots:void mySlots();

QT编程中信号与槽遇到的参数传递问题,如下
你这里槽函数里面有形参 但信号里面并没有传递过来 所以就连接不到一起 而且连接的时候只要写明参数的类型就可以了 你这里tcpsocket应该是对象名吧 这样就不对了 举个例子 connect(btn, SIGNAL( clicked(bool) ), this, SLOT( onClicked( bool ) ));...

相似回答