QT中的Singal\slot机制
在QT工程项目中,会使用到多窗口或者二级窗口,而窗口之间做数据交流时,可以使用信号\槽机制,将两个不相关的对象相连,达到数据传输的效果。
语法
Connect函数
以子窗口向父窗口传递数据为例
- 子界面
在子界面中,需要在类中添加信号(singal)函数,在信号函数中,获取数据。
son_win.h
signals:
void sendData(QString); //传递数据的信号
son_win.cpp
emit sendData(ui->textEdit->toPlainText());
//以获取textEdit数据为例,触发函数可以使用按键事件
- 父界面
在父界面中,添加槽函数以接收信息
father_win.h
void receiveData(QString data); // 槽函数
father_win.cpp
void Widget::receiveData(QString data)
{
ui->textBrowser->insertPlainText(data); //接收输入并且显示
ui->textBrowser->moveCursor(QTextCursor::End);
}
3.连接器
有了信号和槽,但是两个事件是并不相关的,都是独立于工程的,所以需要一个连接器,也就是connect函数将两者关联起来,使得在信号发射时,槽能够立即响应。
father_win.cpp
//在构造函数中创建对象和调用connect函数
son_win *dlg = new son_win;
connect(dlg,SIGNAL(sendData(QString)),this,SLOT(receiveData(QString)));