网站设计就业形势,国内新闻摘抄2022年,oa系统怎么使用,网站模板做网站Qt中信号与槽的使用
Qt当中一个重要的东西是信号和槽#xff0c;它被用于对象之间的通信。
在Qt中#xff0c;例如“点击按钮”这个事件就是发送信号的对象#xff0c;接收信号的是某一个窗口#xff0c;响应信号的是一个处理#xff0c;可以是隐藏窗口或者是关闭窗口。…Qt中信号与槽的使用
Qt·当中一个重要的东西是信号和槽它被用于对象之间的通信。
在Qt中例如“点击按钮”这个事件就是发送信号的对象接收信号的是某一个窗口响应信号的是一个处理可以是隐藏窗口或者是关闭窗口。响应信号的是槽。
在Qt中发送对象、发送的信号、接收对象、槽可以通过很多种方式连接。可以是一对一也可以是一对多。
在Qt 4的版本中主要通过connect 宏的方式进行通信连接。
connect(发送对象信号接收对象槽函数)其中发送信号和槽函数需要用 SIGNAL() 和 SLOT() 来进行声明。
比如点击按钮关闭窗口的例子代码可以这样写
connect(ui-pushButton, SIGNAL(clicked()), this, SLOT(close()));如果想自定义槽函数需要先将槽函数的声明添加到类的slots中。比如我们对一个QLineEdit控件添加一个接收textEdited信号的槽函数onTextEdited
class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();private slots:void onTextEdited(QString);private:Ui::MainWindow *ui;
};然后实现函数并用connect与信号连接
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui-setupUi(this);connect(ui-pushButton, SIGNAL(clicked()), this, SLOT(close())); connect(ui-lineEdit, SIGNAL(textEdited(QString)), this, SLOT(onTextEdited(QString)));
}void MainWindow::onTextEdited(QString s)
{qDebug() s;
}Qt 5 推出了新的 connect 函数不需要使用 SIGNAL() 和 SLOT() 宏可以在编译时做类型检查。
同样用代码实现点击按钮关闭窗口并且添加一个QLineEdit控件发送textEdited信号由onTextChanged()函数作为槽函数响应。
class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();void textChanged(QString);private:Ui::MainWindow *ui;
};使用 connect 将信号与槽函数连接不需要再使用 SIGNAL() 和 SLOT() 宏
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui-setupUi(this);connect(ui-pushButton, QPushButton::clicked, this, MainWindow::close);connect(ui-lineEdit, QLineEdit::textEdited, this, MainWindow::textChanged);
}void MainWindow::textChanged(QString s)
{qDebug() s;
}该文章会更新欢迎大家批评指正。
推荐一个零声学院免费公开课程个人觉得老师讲得不错 分享给大家[LinuxNginxZeroMQMySQLRedis fastdfsMongoDBZK流媒体CDNP2PK8SDocker TCP/IP协程DPDK等技术内容点击立即学习: 服务器课程C服务器