<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: