什么是信号和槽?信号和槽的作用
信号和槽都是函数,比如按下窗口上的一个按钮后想要弹出一个对话框,那么就可以将这个按钮的单击信号和我们定义的槽关联起来,在这个槽中可以创建一个对话框,并且显示它。这样,当单击这个按钮时就会发射信号,进而执行我们的槽来显示一个对话框
接下来用信号和槽的机制建立一个项目。先看看该项目的作用:点击“显示子窗口”会弹出小的窗口。
项目编写过程(自动关联方式):
(1)接着上一个mywidget1项目写。双击mywidget.ui文件(运行结果)添加Label,编辑文字“我是主界面”。加Push Button,编辑“显示子窗口”。注意:这里将Push Button的objectName改为showChildButton。
(2)在mywidget.h文件中MyWidget类声明的最后添加槽的声明:
public slots:
void showChildDialog();
(3)在.cpp文件中编辑showChildDialog()槽的实现:
void MyWidget::showChildDialog()
{
QDialog *dialog = new QDialog(this);
dialog ->show();
}
(4)修改MyWidget类的构造函数:
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent), //mywidget类的构造函数。
ui(new Ui::MyWidget)
{
ui->setupUi(this);
connect(ui->showChildButton,&QPushButton::clicked,
this,&MyWidget::showChildDialog);
}
connect()函数将按钮的单击信号clicked()与新建的槽关联。
发射信号的对象:showChildButton;发射的信号:QPushButton
接收信号的对象:MyWidget ;执行的槽 :showChildDialog。