关于connect的几个问题

CookiesKnight 2018-06-05 02:50:15
新手,在使用时有几个疑问:
1. connect语句,是即刻生效的吗?比如在一个函数function1里面我使用:
this->connect(this, SIGNAL(testfinished()), this, SLOT(btnTest1()));
然后在函数没结束前,马上就发一个信号testfinished(),程序是会立刻跳转到槽btnTest1()那吗?还是说,即使信号testfinished()出现了,也需要等待function1完全结束了,才会跳转到槽btnTest1()?
2. 对问题1的扩展:我使用信号和槽,从一个函数跳转到另外一个函数,而且都是在没有完全运行完以前就开始跳转的,如下:
void Widget::function1()
{
..............
..............
emit signalTofuntion2;
}
void Widget::function2()
{
..............
..............
emit signalTofuntion3;
}
void Widget::function3()
{
..............
..............
emit signalTofuntion4;
}
那么,是不是也是按照1中的答案运行整个程序的?
麻烦详细解释一下,谢谢!
...全文
1644 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooolinux 2018-06-25
  • 打赏
  • 举报
回复
1楼说了,connect有第5个参数,如果参数为Qt::QueuedConnection,发射信号以后会马上接着执行后面的语句,而槽函数的执行要由线程的事件循环调度。
ooolinux 2018-06-06
  • 打赏
  • 举报
回复
#include "dialog.h"
#include <QDebug>

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    connect(this,SIGNAL(s1()),this,SLOT(fun1()));
    connect(this,SIGNAL(s2()),this,SLOT(fun2()));
    emit s1();
    qDebug()<<"构造函数离开";
}

Dialog::~Dialog()
{

}

void Dialog::fun1()
{
    qDebug()<<"函数1进入";
    emit s2();
    qDebug()<<"函数1离开";
}

void Dialog::fun2()
{
    qDebug()<<"函数2进入";
}
结果: 函数1进入 函数2进入 函数1离开 构造函数离开
ooolinux 2018-06-06
  • 打赏
  • 举报
回复
用qDebug试试就知道了: void Widget::function1() { .............. .............. emit signalTofuntion2; qDebug()<<"函数1离开"; } void Widget::function2() { qDebug()<<"函数2进入"; .............. .............. emit signalTofuntion3; } void Widget::function3() { .............. .............. emit signalTofuntion4; }
水军总督 2018-06-06
  • 打赏
  • 举报
回复
一般来说,用connect将信号和槽绑定在一起,都是在类的构造函数中使用的。用connect将信号和槽关联起来,使二者的关系在程序运行期间一直都在,我们只需要控制信号的emit就好了。大不了在某个地方disconnect解除绑定关系即可。 所以总的来说,像你说的将connect写在某个成员函数里的,工作中基本没看见。这种写法我个人觉得比较另类,说严重点,代码不规范。所有的信号和槽的绑定就写在统一的地方,一般就是构造函数了
_LinGM 2018-06-05
  • 打赏
  • 举报
回复
去查找QObject::connect第五个参数的资料

16,215

社区成员

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

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