实现窗口A发送一个信号,B接收这个信号,然后执行一系列操作。
窗口A和窗口B没有任何联系。
需要让A的指针,作为B的成员变量
class ResetPwd { public: fun(); signals: void SignalPwd(QString OldPwd, QString NewPwd); // 定义个信号 QString OldPwd; QString NewPwd; }; // 调用这个函数发送一个信号 void ResetPwd::fun() { .....函数内容 emit SignalPwd(OldPwd,NewPwd); // 发送一个信号广播,让主窗口Mainwindow接收 } class MainWindow { public:
void f2(); private slots: void slotPwd(QString OldPwd, QString NewPwd); // 修改密码的槽函数 private: QString username; // 记录当前登录的用户名 QString password; //记录当前用户的密码 ResetPwd *repwd; // 修改密码类对象 ResetPwd类对象作为,目标窗口的成员变量 }; void MainWindow::f2() { repwd = new ResetPwd(this); repwd->show(); // 这里自定义的信号与槽,从不同的对象中传来的 // repwd 传来一个SignalPwd的信号,this 执行 slotPwd函数 connect(repwd, &ResetPwd::SignalPwd, this, &MainWindow::slotPwd); } void MainWindow::slotPwd(QString OldPwd, QString NewPwd) { 执行slotPwd函数 ... } 就是 ResetPwd类对象发送了一个 自定义的信号SignalPwd(可传参) // 广播的方式发射 MainWindow 类对象接收,然后处理 repwd对象传来了一个自定义的,可传参的信号, MainWindow对象接收后,执行操作 connect(repwd, &ResetPwd::SignalPwd, this, &MainWindow::slotPwd);
还有常用的转到槽