qt4典型的信号槽的实现

来源:互联网 发布:空燃比传感器数据 编辑:程序博客网 时间:2024/05/09 23:08



dialog.h

#ifndef DIALOG_H#define DIALOG_H#include <QDialog>namespace Ui {class Dialog;}class Dialog : public QDialog{    Q_OBJECTpublic:    explicit Dialog(QWidget *parent = 0);    ~Dialog();private slots:                       //槽函数,右击发送按钮的“转到槽”    void on_send_clicked();signals:    void StringChange(QString str);  //信号private:    Ui::Dialog *ui;};#endif // DIALOG_H

mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();private slots:                                 //槽函数    void showString(QString str);private:    Ui::MainWindow *ui;};#endif // MAINWINDOW_H

dialog.cpp

#include "dialog.h"#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :    QDialog(parent),    ui(new Ui::Dialog){    ui->setupUi(this);}Dialog::~Dialog(){    delete ui;}void Dialog::on_send_clicked(){    QString str = ui->StringlineEdit->text();   //保存编辑框上的文本    emit StringChange(str);                     //发送信号}

mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"#include "dialog.h"MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    Dialog *dlg = new Dialog(this);    connect(dlg,SIGNAL(StringChange(QString)),this,SLOT(showString(QString)));    //将对话框上的信号与自己的槽函数进行关联    dlg->show();}MainWindow::~MainWindow(){    delete ui;}void MainWindow::showString(QString str){    ui->stringLabel->setText(str);}
main.cpp

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){    QApplication a(argc, argv);    MainWindow w;    w.show();    return a.exec();}




0 0