VS2019+Q6.24T学习心得

文章详细介绍了QT中的信号与槽机制,包括如何使用connect连接信号和槽,信号与槽的自定义,指针类型的指定,以及Lambda表达式的应用。特别强调了信号参数与槽函数参数的一一对应规则,并给出了错误处理示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dayone

connect:4种用法

        注意点:

        (1)每个QT变量都可以接收信号,但需要指定某一变量来处理。

        (2)信号与槽都可以自定义函数,但是信号不需要实现,槽函数需要实现。

        (3)QT中定义指针需要指定指针类型,如(Beauty:*slotAnwer)(QString),(QString)是参数类型,可以有重载函数的多个不同参数。

        (4)如果 &QPushButton::clicked对应的槽函数带参,那么槽函数参数需要是bool类型,因为clicked参数为bool类型,需要一一对应。

         一个信号包含两个函数,这两个函数可以作为两个connect信号发出者,执行相对应槽函数。

        相应的一个槽函数也可使用Lambda函数来定义信号槽的回调函数,执行多个任务

        例如:

void SubWidget::mySlot()
{
    emit sigSub();
    emit sigSub(250, "你是二百五!!!");

}

    connect(&subW,&SubWidget::sigSub,this,&MainWidget::slotShowMe);
     connect(&subW,&SubWidget::sigSub, this, &MainWidget::slotSubMsg);
    //错误 SubWidget名字重复,解决办法:1.换函数名字
    //2.定义一个新指针指向不同重载信号,但需要指定该信号属于哪一类,所以指定指针类型
    // 定义该指针属于SubWidget这个类,信号返回值为void

    void (SubWidget :: * MySigSub)() = &SubWidget::sigSub;
    connect(&subW, MySigSub,this,&MainWidget::slotShowMe);
   
    void (SubWidget::* MySigPlus)(int,QString) = &SubWidget::sigSub;
    connect(&subW,MySigPlus, this, &MainWidget::slotSubMsg);


    connect(b1, &QPushButton::clicked, this, [=]()
        {
            b2->setText("Lambda表达式!!!");
            b3->hide();
        });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值