dialog间的信号传递实例源码



<QT>dialog间的信号传递实例源码实例。qt 两个对话框直接传递信号

思路:
signals:
void SignalSetLineEdit2Value(QString strText); //这个在Dialog 1中声明,只需声明。信号

public slots:
void SlotSetLineEdit2Value(QString strText); //这个在Dialog 2中声明并实现。
注意信号和槽的参数必须一样。

在Dialog 1的Button点击事件里添加 发送信号:emit SignalSetLineEdit2Value(strText);

在main函数中连接信号和槽:
int main(int argc, char *argv[])
{
…………
Dialog1 dialog1;
Dialog2 dialog2;

QObject::connect(&dialog1,SIGNAL(SignalSetLineEdit2Value(QString)),&dialog2,SLOT(SlotSetLineEdit2Value(QString)));
……………..
}

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>示例代码>>>>>>>>>>>>>>>>>>>>>>>>>>>
dialog1.h:
#ifndef DIALOG1_H
#define DIALOG1_H

#include

namespace Ui {
class Dialog1;
}

class Dialog1 : public QDialog
{
Q_OBJECT

public:
explicit Dialog1(QWidget *parent = 0);
~Dialog1();
signals:
void selectedButton(QString text);


private slots:
void button1();
void button2();
void ok();

private:
Ui::Dialog1 *ui;
};

#endif // DIALOG1_H

dialog1.cpp
#include “dialog1.h”
#include “ui_dialog1.h”

Dialog1::Dialog1(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog1)
{
ui->setupUi(this);

connect(ui->pButton_1,SIGNAL(clicked()),this,SLOT(button1()));
connect(ui->pButton_2,SIGNAL(clicked()),this,SLOT(button2()));
connect(ui->pButton_3,SIGNAL(clicked()),this,SLOT(ok()));
}

Dialog1::~Dialog1()
{
delete ui;
}

void Dialog1::button1()
{
ui->lineEdit1->setText(tr(“1″));
}

void Dialog1::button2()
{
ui->lineEdit1->setText(tr(“2″));
}

void Dialog1::ok()
{
emit selectedButton(ui->lineEdit1->text());
}

dialog1.ui: