平台:Qt+VS
目的:简单测试信号与槽。
问题:有两个 pushbutton,一个实现简单加法,一个实现关闭窗口。
- 将关闭窗口的 connnect 函数放在 Setupui 前面,在运行的时候就会引起内存冲突,放到后面就不会。
- 将计算加法的 connect 函数放在 Setupui 前面,在运行的时候反而不会引起内存冲突。
尝试:尝试过调换二者的位置,好像一样会有问题。
请教一下,原因是什么?

平台:Qt+VS
目的:简单测试信号与槽。
问题:有两个 pushbutton,一个实现简单加法,一个实现关闭窗口。
尝试:尝试过调换二者的位置,好像一样会有问题。
请教一下,原因是什么?
QtGuiApplication1::QtGuiApplication1(QWidget *parent) : QMainWindow(parent) { connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(Calculate())); connect(ui.btn_CloseWindow, SIGNAL(clicked()), this, SLOT(CloseWindow())); ui.setupUi(this); } 1 weyou May 21, 2020 via Android show me the code |
3 lwh0328 May 21, 2020 没有完整的代码啊。。。。 粗略的感觉,setupUi 这里会分配内存创建内容什么的,connect 放前面的话,可能有些 ui 没有被分配资源? CloseWindow() 可能涉及到 destroy 一些资源,这样可能会回收一些没有被分配资源的变量。Calculate() 我的理解是进到你的这个函数里做运算。 |
4 weyou May 21, 2020 via Android 代码不全,猜想 setupUi 是 IDE 自动生成的代码吧,这个函数里一般都是创建控件,也就是说在 setupUi 调用之前,那些 button 还不存在呢,你都已经开始去连接信号槽了,显然是有问题的啊 |
5 newmlp May 21, 2020 connect 连的对象必须先 new 出来才行 |