A.h头文件
#pragma once
#include <QtWidgets/QMainWindow>
class A : public QMainWindow
{
Q_OBJECT
public:
A(QWidget *parent = Q_NULLPTR);
//...这里有函数会改变flag的值变成false
void set(bool f) {
flag = f;
emit ValueChanged(flag); //发送信号
}
signals:
void ValueChanged(bool); //自定义信号
private:
bool flag = false;
};
B.h头文件
#pragma once
#include "A.h"
#include "qdialog.h"
class B : public QDialog
{
Q_OBJECT
public:
B() {
a = new A();
bool bbb = connect(a, SIGNAL(ValueChanged(bool)), this, SLOT(ChangeValue(bool))); //connect连接
}
void fun(bool v) {
a->set(v);
//在此设置falg值后怎么监控flag值,当flag变成false时再执行此函数后面操作
}
public slots:
void ChangeValue(bool f){ printf("%d\n", f); } //槽函数定义
private:
A* a;
};
main.cpp
#include "B.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
B *bb = new B();
bb->fun(false);
bb->fun(true);
bb->fun(true);
bb->fun(false);
return a.exec();
}
运行结果
0
1
1
0