一生一世学坛

 找回密码
 立即注册
搜索
查看: 3791|回复: 0
打印 上一主题 下一主题

qt connect的各种用法

[复制链接]

334

主题

385

帖子

6830

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6830
跳转到指定楼层
楼主
发表于 2022-1-27 10:31:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
和定时器搭配
QTimer *timer = new QTimer(this);
    connect(timer, &QTimer::timeout,this, [=]()mutable {n += 1;qDebug()<<n<<endl;});
    timer->start(1000);


和按钮信号搭配
clicked是带参数的信号
connect(&b, &QPushButton::clicked,            [=] (bool value)            {                qDebug() << value;            }            );


用宏包成员信号和槽
connect(m_pBtn,SIGNAL(sigClicked(bool)),this,SLOT(onClicked(bool)));


无需参数的写法:(没有重载用第一个,如果有重载,用第2个)
1、connect(m_pBtn,&MyButton:: sigClicked,this,&Widget:: onClicked);
2、connect(m_pBtn, static_cast<void (MyButton:: *)(bool)>(&MyButton:: sigClicked), this, &Widget:: onClicked);或者connect(m_pBtn, QOverload<bool>:: of(&MyButton:: sigClicked),this,&Widget:: onClicked);

connect(m_pBtn, QOverload<bool>:: of(&MyButton:: sigClicked),

               [=](bool check){undefined

                /* do something.. */

                });


设置第5个参数的用法:

auto type = static_cast<Qt::ConnectionType>(Qt::UniqueConnection|Qt:: QueuedConnection);

auto func = [=] () {qDebug("Hello from lambda slot");};
    w.connect(&w, &QPushButton::clicked, &a, func, type);


disconnect:

QObject::disconnect(lineEdit,&QLineEdit::textChanged,label,  &QLabel::setText);

disconnect(myObject,0, myReceiver,0);

disconnect(myObject,&MyObject::mySignal(),0,0);

disconnect(myObject,0,0,0);



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|分享学习  

GMT+8, 2024-5-17 15:04 , Processed in 0.047710 second(s), 8 queries , File On.

声明:本站严禁任何人以任何形式发表违法言论!

本站内容由网友原创或转载,如果侵犯了您的合法权益,请及时联系处理!© 2017 zamxqun@163.com

皖公网安备 34010402700634号

皖ICP备17017002号-1

快速回复 返回顶部 返回列表