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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,我们可以自定义对话框的标题以及添加最小化、最大化、关闭和帮助功能。 首先,关于对话框的标题,我们可以通过调用对话框的`setWindowTitle()`函数来设置自定义的标题。例如,`dialog.setWindowTitle("自定义标题")`可以将对话框的标题设置为"自定义标题"。 其次,最小化、最大化和关闭功能可以通过在对话框中添加按钮来实现。我们可以使用`QDialogButtonBox`类来创建一个按钮盒子,然后将最小化、最大化和关闭按钮添加到该盒子中。具体代码如下: ```cpp QDialogButtonBox *buttonBox = new QDialogButtonBox(Qt::WindowMinimizeButton | Qt::WindowMaximizeButton | Qt::CloseButton); ``` 这里,我们使用`Qt::WindowMinimizeButton`和`Qt::WindowMaximizeButton`参数来添加最小化和最大化按钮,使用`Qt::CloseButton`参数来添加关闭按钮。 最后,关于帮助功能,我们可以使用`QDialog`类提供的`setHelpButton()`函数来添加帮助按钮,并通过连接帮助按钮的信号来实现帮助功能。具体代码如下: ```cpp dialog.setHelpButton(new QPushButton("帮助")); connect(dialog.helpButton(), &QPushButton::clicked, this, &MyClass::showHelp); ``` 在上述代码中,我们首先创建了一个新的`QPushButton`对象,并将其作为参数传递给`setHelpButton()`函数,从而将帮助按钮添加到对话框中。然后,我们使用`connect()`函数将帮助按钮的`clicked`信号与一个函数`showHelp`连接起来,以实现点击帮助按钮时执行相应的操作。 综上所述,我们可以通过上述方法实现在Qt对话框自定义标题、添加最小化、最大化、关闭和帮助功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值