Qt基础 02_Qt对话框(一)

本文介绍了Qt编程中对话框的基础知识,包括模态和非模态对话框的概述及其应用场景。模态对话框在关闭前阻止程序其他工作,而非模态对话框允许用户同时与多个窗口交互。文章还提供了实现点击按钮弹出模态和非模态对话框的步骤,并给出了源代码链接。作业部分要求在Qt环境中创建工程,实现点击按钮弹出非模态对话框并处理已弹出对话框的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/******************************************************
* 课程名 :QT编程
* 时 间 :2017年6月1日(周四)上午(前半段)
* 工程名 :03-Dialog
* 类 名 :dialog03
* 内 容 :对话框(第一部分):模态对话框和非模态对话框;槽函数的简介
******************************************************/

一、对话框概述

1.对话框:实现短期任务,简洁的交互,一般以弹出的方式展现
2.分类
- 模 态:在关闭模式对话框之前,程序不能进行其他工作(和父窗口的交互被阻塞)
- 非模态:模式对话框打开后,程序仍然能够进行其他工作(父子窗口可同时和用户交互),如:记事本中的查找对话框

二、模态非模态对话框的实现

目标:点击按钮,弹出新的对话框(模态及非模态)
- 步骤一:在ui界面新建一个Button,并使用“转到槽”自动生成函数Dialog03::on_pushButton_clicked()
- 步骤二:在槽函数中添加以下代码:

//弹出模态对话框方式一:exec() - 会阻塞
void Dialog03::on_pushButton_clicked()
{
   qDebug() << "按钮被点击,槽函数运行";

    //1.实例化一个对象
    Dialog03 dlg ;
    //2.弹出
    dlg.exec(); //弹出的和原有的一模一样,并阻塞下一条被执行
    qDebug() << "模态方式一:此时我执行了";
}
//弹出模态对话框方式二:show() - 不阻塞,但setModal使其阻塞
void Dialog03::on_pushButton_clicked()
{
   qDebug() << "按钮被点击,槽函数运行";

    Dialog03 *dlg = new Dialog03;
    dlg->setAttribute(Qt::WA_DeleteOnClose);
    dlg->setModal(true);    //用F1查看QDialog,可知需要将Modal设为true
    dlg->show();

    qDebug() << "模态方式二:此时我执行了";
}
//弹出非模态对话框
void Dialog03::on_pushButton_clicked()
{
    Dialog03 *dlg = new Dialog03  ;
    dlg->setAttribute(Qt::WA_DeleteOnClose);

    //与"模态对话框方式二"的唯一差别 true->false ;
    dlg->setModal(false);   //此句不写也可,默认为false

    dlg->show();

    qDebug()<<"非模态:我被执行了";
}

源代码:http://download.youkuaiyun.com/detail/c_estbon/9860945

作业1:
建立工程,在A界面中添加一个按钮部件pop,点击pop按钮非模态弹出对话框B。
要求:
如果B对话框未弹出,点击pop按钮弹出对话框B;
如果B对话框已经弹出,点击pop按钮让对话框B获得焦点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值