QT connect lambda表达式注意事项

2023-06-18  本文已影响0人  雯饰太一
//参数不匹配[失败]
QPushButton* btn;
connect(btn,&QPushButton::clicked,this,[](GTMap* pMap){
        printf("can compile.");
    });
//隐式类型转换[通过]
QPushButton* btn;
    connect(btn,&QPushButton::clicked,this,[](int a){
        printf("can compile.");
    });

// 参数个数太多[失败]
QPushButton* btn;
    connect(btn,&QPushButton::clicked,this,[](int a, int b){
        printf("can compile.");
    });

具有重载特性的槽函数,connect写法

QDoubleSpinBox * pBox;//这一行不能直接复制,需要处理
connect(pBox,static_cast<void(QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),this,[=](double value)
    {
        //处理逻辑
    });
//or 5.7开始可以使用QOverload宏写重载,这种写法更像符合语言描述的习惯
connect(doubleSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged),[=](double d)
    { 
        //处理逻辑    
    });

lambda表达式的使用

相关链接:

上一篇下一篇

猜你喜欢

热点阅读