QT--信号与槽(2) 自定义对话框

QT–信号与槽(2) 自定义对话框

添加槽

在前面的项目中修改
项目:https://wwa.lanzoui.com/i5sCDwu30pa

添加一个对话框,添加qt设计ui–》dialog without buttons ,类名改为 MyDialog。
然后在ui中添加二个push Button 并且改名“进入主界面“和”退出程序“。
在这里插入图片描述
第二步:设计信号与槽
先实现“退出程序“ 的信号与槽
在这里插入图片描述

进入信号与槽的编辑模式
在退出程序按钮上按住鼠标左键,然后拖动到窗口上
在这里插入图片描述
配置连接
在这里插入图片描述
要想取消就按下槽,然后delete或者右键–删除

当然在信号与槽编辑区域也可以设置
在这里插入图片描述
编辑好后按 回到编辑widget界面
在这里插入图片描述
关于其他的可以到帮助的Qt Designer’s Signals and Slots Editing Mode 中查看
Qt Designer’s Signals and Slots Editing Mode
在这里插入图片描述
Qt Designer 的 Signals and Slots 编辑模式

现在写进入主界面按钮的信号与槽,在改按钮上右击–转到槽–选择clicked信号

在这里插入图片描述
写代码

void MyDialog::on_pushButton_clicked()
{
    
    
    accept();
}

这个accept函数就是QDialog类中的一个槽,对于一个使用exec()函数实现的模态对话,执行这个槽就会隐藏这个模态对话框,并返回QDialog::Accpeted值,这里就是要使用这个值来判断是那个按钮被按下了。

与其对应的还有一个reject()槽,他可以返回一个QDialog::Rejected值。前面的退出程序也可以关联这个槽

在主界面使用自定义的对话框

更改main.cpp

#include "mywidget.h"
#include <QApplication>
#include "mydialog.h"

int main(int argc, char *argv[])
{
    
    
    QApplication a(argc, argv);
    MyWidget w;
    MyDialog dialog;
    if(dialog.exec()==QDialog::Accepted)
    {
    
    
        //如果是按下了"进入主界面"
      w.show();
      return a.exec(); //程序正常运行代码
}
   else return  0;//退出程序代码
}

主函数中建立MyDialog对象,然后判断其exec()函数的返回值,如果按下了按钮,应该是QDialog::Accpeted,则显示主界面w,并且运行程序

主界面返回 重新登录按钮设计

下面在 主界面即widget.ui界面设计二个按钮push button,分别更改它们的显示文本为“重新登录”和“退出”。然后使用信号与槽模式将“退出”按钮的clicked()信号和Mywidget界面的close槽关联。完成重新登录按钮的clicked槽,并更改
在这里插入图片描述
在这里插入图片描述

void MyWidget::on_pushButton_clicked()
{
    
    
    //先关闭mywidget,其实只是隐藏起来了,并没有真正退出,然后新建MyDialog对象
    close();
    //现在应该新建一个mydialog的对象 即MyDialog dlg;,显示重新登录
    MyDialog dlg;

    // 如果按下了“进入主窗口”按钮,则再次显示主界面
       // 否则,因为现在已经没有显示的界面了,所以程序将退出
       if(dlg.exec() == QDialog::Accepted) show();

}

close()并不是一定使程序退出,只有当只剩下最后一个主界面,就是没有父窗口,这时候调用close才能退出程序,而其他情况下界面只是隐藏起来了,并没有销毁。

源代码:

https://wwa.lanzoui.com/iQHoewumjcf

猜你喜欢

转载自blog.csdn.net/qq_35629971/article/details/121507427