QT4信号连接与QT5的区别

QT4信号连接与QT5的区别


QT4信号与槽

1. 申明槽函数必须增加public slots

2. SIGNAL SLOT 将函数转为字符串,不进行错误检查(connect中信号和槽需要增加SIGNAL 和SLOT)

3. 槽函数和信号一致(参数,返回值),没有返回值


头文件中申明

public slots:

void MySlot();

void MySlot(int, QString);

源文件中:

connect(&m_send, SIGNAL(TestSign()), this, SLOT(MySlot()));

connect(&m_send, SIGNAL(TestSign(int, QString)), this, SLOT(MySlot(int, QString)));



QT5信号与槽:

(1) SIGNAL SLOT 进行错误检查
(2) 槽可以是任意的 成员函数,普通全局函数和静态函数
(3) 槽函数和信号一致(参数,返回值), 没有返回值

//重载情况下使用 函数指针
void (MyWidget::*signalOne)() = &MyWidget::testSignalOne;
void (MyWidget::*slotOne)() = &MyWidget::testSlotOne;
connect(this, signalOne, this, slotOne);

void (MyWidget::*signalTwo)(int) = &MyWidget::testSignalOne(int);
void (MyWidget::*slotTwo)(int) = &MyWidget::testSlotOne(int);
connect(this, signalTwo, this, slotTwo);

// 非重载可以直接使用
connect(this, &MyWidget::testSignal, this, &MyWidget::testSlot);

猜你喜欢

转载自blog.csdn.net/aidansen/article/details/79008359