Qt信号与槽原理
Qt之emit、singals、slot的使用
自定义信号与槽
常见错误处理方法
//头文件
#include <QCoreApplication>
class MockQt :public QObject
{
Q_OBJECT;
public:
MockQt();
~MockQt() = default;
signals: //信号声明区
void mySignal();
void mySignal(int i);
void mySignal(int m, int n);
public slots: //槽函数声明区
void mySlot();
void mySlot(int i);
void mySlot(int m, int n);
public:
void test(int i);
};
//源文件
#include "header.h"
#include <iostream>
MockQt::MockQt()
{
connect(this, SIGNAL(mySignal()), SLOT(mySlot()));
connect(this, SIGNAL(mySignal(int)), SLOT(mySlot(int)));
connect(this, SIGNAL(mySignal(int, int)), SLOT(mySlot(int, int)));
}
void MockQt::mySlot()
{
std::cout << "等于0
";
}
void MockQt::mySlot(int i)
{
std::cout << "大于0
";
}
void MockQt::mySlot(int m, int n)
{
std::cout << "小于0
";
}
void MockQt::test(int i)
{
if (i == 0)
emit mySignal();
if (i == 1)
emit mySignal(-1);
if (i == 2)
emit mySignal(1, 2);
}
//main
#include "header.h"
#include <iostream>
int main()
{
int a = 0;
MockQt m;
std::cin >> a;
if (a == 0)
m.test(0);
if (a > 0)
m.test(1);
if (a < 0)
m.test(2);
return 0;
}