方法一
例子:
connect(loginBtn,&QPushButton::clicked,this,&LoginDialog::login);
connect(exitBtn,&QPushButton::clicked,this,&LoginDialog::close);
这里的connect()函数就是用来关联信号和槽的,简单来说,第一个参数就是发射信号的部件,比如这里的loginBtn按钮;第二个参数是发射的信号,比如这里是QPushButton类的单击clicked()信号;第三个参数是接受信号的部件,比如这里是this即本部件也就是LoginDialog;第四个参数是要执行的槽,比如这里是LoginDialog类的login()。使用connect()函数就相当于以前在设计模式进行的关联设置。
方法二:
向界面上拖入一个Push Button,然后更改显示文本为“登录到主界面”。为了实现点击这个按钮后可以关闭该对话框并显示主窗口,我们需要设置信号和槽的关联。点击设计模式上方的 图标,或者按下F4,便进入了信号和槽编辑模式。按着鼠标左键,从按钮上拖向界面,如下图所示。
当放开鼠标后,会弹出配置连接对话框,这里我们选择pushButton
的clicked()
信号和LoginDlg
的accept()
槽并按下确定按钮。如下图所示。
设置好信号和槽的关联后,界面如下图所示。
这里简单介绍一下信号和槽:大家可以把它们都看做是函数,比如这里,当单击了按钮以后就会发射单击信号,即clicked();然后对话框接收到信号就会执行相应的操作,即执行accept()槽。一般情况下,我们只需要修改槽函数即可,不过,这里的accept()已经实现了默认的功能,它会将对话框关闭并返回QDialog::Accepted标识,所以无需再做更改。
完成后,可以
按下
图标或者F3键
来返回控件编辑模式。
方法三
使用另外一种信号和槽的关联方法来设置退出按钮。在设计模式下方的信号和槽编辑器(Signals & Slots Editor)中,先点击左上角的绿色加号添加关联,然后选择发送者为exitBtn,信号为clicked(),接收者为LoginDialog,槽为close()。如下图所示。这样,当单击退出按钮时,就会关闭登录对话框。
右击登录按钮,在弹出的菜单中选择“转到槽…
”,然后选择clicked()
信号并确定。转到相应的槽以后,添加函数调用:
void
LoginDialog
::
on_loginBtn_clicked()
{
accept
();
}
下面到main.cpp
文件,更改内容如下:
#include
#include
"mainwindow.h"
#include
"logindialog.h"
int
main(int argc, char *argv[])
{
QApplication
a(argc,
argv);
MainWindow
w;
LoginDialog
dlg;
if
(dlg.
exec() == QDialog::Accepted)
{
w.
show();
return
a.
exec();
}
else
return
0
;
}