Qt实现两个非模态窗口的数据传递(信号与槽方式)

    xiaoxiao2021-12-14  18

    我尝试过定义全局变量,但是怎么都无法运行成功,所以换信号与槽方式。我这里的实现是,在一个窗体内的LineEdit中输入一段文本,点击一个按钮控件后,输入的文本显示在另一个独立的窗口中的LineEdit中。即实现了两个窗口之间的数据传递。

    第一步:创建工程。首先创建两个窗口类,我这里创建的是两个DiaLog窗体。注:dialog为输入文本的窗口,result为显示文本的窗口。

    第二步:实现粗糙基本界面设计。往dialog窗体中拖入一个LineEdit输入框用于输入数据,一个PushButtton控件。往result窗体中拖入一个LineEdit输入框用来显示文本。

    (1)在dialog.h中添加一个私有槽函数声明:

    private slots: void on_pushButton_clicked(); 添加一个信号量: signals: void selectedsignal(QString text); (2)在dialog.cpp中定义槽函数: void Dialog::on_pushButton_clicked(){ emit selectedsignal(ui->lineEdit->text());//将LineEdit中输入的文本通过selectedsignal函数传出来}在dialog类的构造函数中添加信号与槽的连接:QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));//信号发生主体是Button按钮,信号是click点击事件,,接受信号的主体是当前的窗体,接收信号后执行的动作是on_pushButton_clicked(),即把文本信息当做信号发射出来 (3)在result.h中添加槽函数,用来接收dialog发出的信号selectedsignal(QString text)private slots: void updateNum(QString text); (4)在result.cpp中定义该槽函数,即将接受的文本显示在result窗体内的LineEdit框内。void Result::updateNum(QString text){ ui->lineEdit->setText(text);} (5)在main.cpp中添加信号槽链接QObject::connect(&w,SIGNAL(selectedsignal(QString )),&r,SLOT(updateNum(QString)));w是dialog类的对象,r是result类的对象。 END,跑出来的结果如图所示:

    转载请注明原文地址: https://ju.6miu.com/read-971221.html

    最新回复(0)