精华内容
下载资源
问答
  • 模式对话框

    2017-09-23 09:16:19
    对话框是用来提醒用户输入,分为模式对话框和非模式对话框模式对话框弹出后,之前的窗口被锁定,只有关闭对话框后,才能回到之前界面;(比较常见) 非模式对话框则可以同时操作前后两个窗口; 为了演示模式...

    对话框是用来提醒用户输入,分为模式对话框和非模式对话框;
    模式对话框弹出后,之前的窗口被锁定,只有关闭对话框后,才能回到之前界面;(比较常见)
    非模式对话框则可以同时操作前后两个窗口;
    为了演示模式对话框,首先创建两个窗口,一个为带有登陆按钮的窗口,另一个是登陆界面如图:
    这里写图片描述
    这里写图片描述
    第一个窗口的创建很简答,之前已经学习过,通过连接PushButton的信号与槽,建立联系;
    重点在第二个窗口的创建,这个也是新学到的内容,右键点击解决方案,选择添加QT类,出现如下对话框,选择GUI类,进入下一个对话框
    这里写图片描述
    这里写图片描述
    重命名,并且把父类改为QDialog,创建完成后,解决方案中会增加新的ui以及对应的头文件和cpp文件。此时可以创建第二个对话框,并设置属性。同时建立按钮的关联。

    Qt7_1A.cpp

    #include "Qt7_1A.h"
    #include"LoginDlg.h" // 引用LoginDlg头文件
    #include<QDebug>  //  打印输出
    Qt7_1A::Qt7_1A(QWidget *parent)
        : QMainWindow(parent)
    {
        ui.setupUi(this);
        // 连接登陆按钮的信号与槽
        connect(ui.btnLogin,SIGNAL(clicked()),
            this, SLOT(OnBtnLogin()));
    }
    
    
    int Qt7_1A::OnBtnLogin() // 点击登陆按钮后,进入当前函数
    {
        // 使用对话框
        LoginDlg dlg(this);
        // 这里exce()函数要有一个返回值,要不然程序会堵塞
        int ret = dlg.exec(); // exec()函数就是执行命令,弹出对话框
        if (ret == QDialog::Accepted)
        {
            //取得用户输入
            qDebug() << dlg.m_user << dlg.m_password;
    
        }
        else
        {
    
    
        }
        return 0;
    }

    LoginDlg.cpp

    #include "LoginDlg.h"
    
    LoginDlg::LoginDlg(QWidget *parent)
        : QDialog(parent)
    {
        ui.setupUi(this);
    
        connect(ui.BtnOK, SIGNAL(clicked()), this, SLOT(OnBtnOK()));
        connect(ui.BtnCancel, SIGNAL(clicked()), this, SLOT(OnBtnCancel()));
    
    }
    
    LoginDlg::~LoginDlg()
    {
    }
    
    int LoginDlg::OnBtnOK()
    {
        //取得用户的输入
         m_user = ui.EditUser->text();
         m_password = ui.EditPassword->text();
    
        accept(); // 关闭当前对话框,并使exce()函数返回Accepted
        return 0;
    }
    int LoginDlg::OnBtnCancel()
    {
    
        reject();
        return 0;
    }
    展开全文
  • Qt 之模式、非模式、半模式对话框

    万次阅读 多人点赞 2016-04-05 19:17:52
    模式对话框 描述 效果 源码 非模式对话框 描述 效果 源码 半模式对话框 描述 效果 源码 更多参考模式对话框描述阻塞同一应用程序中其它可视窗口输入的对话框。模式对话框有自己的事件循环,用户必须完成这个对话框中...

    简述

    关于“模式”和“非模式”对话框,相信大家都比较熟悉,但其中有一个可能很多人都比较陌生,介于两者之间的状态,我们称之为“半模式“。

    | 版权声明:一去、二三里,未经博主允许不得转载。

    模式对话框

    描述

    阻塞同一应用程序中其它可视窗口输入的对话框。模式对话框有自己的事件循环,用户必须完成这个对话框中的交互操作,并且关闭了它之后才能访问应用程序中的其它任何窗口。模式对话框仅阻止访问与对话相关联的窗口,允许用户继续使用其它窗口中的应用程序。

    显示模态对话框最常见的方法是调用其exec()函数,当用户关闭对话框,exec()将提供一个有用的返回值,并且这时流程控制继续从调用exec()的地方进行。通常情况下,要获得对话框关闭并返回相应的值,我们连接默认按钮,例如:”确定”按钮连接到accept()槽,”取消”按钮连接到reject()槽。另外我们也可以连接done()槽,传递给它Accepted或Rejected。

    效果

    这里写图片描述

    源码

    MainWindow *pMainWindow = new MainWindow();
    pMainWindow->setWindowTitle(QStringLiteral("主界面"));
    pMainWindow->show();
    
    CustomWindow *pDialog = new CustomWindow(pMainWindow);
    pDialog->setWindowTitle(QStringLiteral("模式对话框"));
    
    // 关键代码
    pDialog->exec();
    
    // 关闭模态对话框以后才会执行下面的代码
    pMainWindow->setWindowTitle(QStringLiteral("主界面-模式对话框"));
    qDebug() << QStringLiteral("关闭模态对话框以后,可以继续向下执行");
    1. 主界面被阻塞,不能进行点击、拖动等任何操作。
    2. exec()之后的代码不会执行,直到关闭模态对话框。

    非模式对话框

    描述

    和同一个程序中其它窗口操作无关的对话框。在文字处理中的查找和替换对话框通常是非模式的,允许用户同时与应用程序的主窗口和对话框进行交互。调用show()来显示非模式对话框,并立即将控制返回给调用者。

    如果隐藏对话框后调用show()函数,对话框将显示在其原始位置,这是因为窗口管理器决定的窗户位置没有明确由程序员指定,为了保持被用户移动的对话框位置,在closeEvent()中进行处理,然后在显示之前,将对话框移动到该位置。

    效果

    这里写图片描述

    源码

    MainWindow *pMainWindow = new MainWindow();
    pMainWindow->setWindowTitle(QStringLiteral("主界面"));
    pMainWindow->show();
    
    CustomWindow *pDialog = new CustomWindow(pMainWindow);
    pDialog->setWindowTitle(QStringLiteral("非模式对话框"));
    
    // 关键代码
    pDialog->show();
    
    // 下面的代码会立即运行
    pMainWindow->setWindowTitle(QStringLiteral("主界面-非模式对话框"));
    qDebug() << QStringLiteral("立即运行");
    1. 主界面不会被阻塞,可以进行点击、拖动等任何操作。
    2. show()之后的代码会立即执行。

    半模式对话框

    描述

    调用setModal(true)或者setWindowModality(),然后show()。有别于exec(),show() 立即返回给控制调用者。

    对于进度对话框来说,调用setModal(true)是非常有用的,用户必须拥有与其交互的能力,例如:取消长时间运行的操作。如果使用show()和setModal(true)共同执行一个长时间操作,则必须定期在执行过程中调用QApplication ::processEvents(),以使用户能够与对话框交互(可以参考QProgressDialog)。

    效果

    这里写图片描述

    源码

    MainWindow *pMainWindow = new MainWindow();
    pMainWindow->setWindowTitle(QStringLiteral("主界面"));
    pMainWindow->show();
    
    CustomWindow *pDialog = new CustomWindow(pMainWindow);
    pDialog->setWindowTitle(QStringLiteral("半模式对话框"));
    
    // 关键代码
    pDialog->setModal(true);
    pDialog->show();
    
    // 下面的代码会立即运行
    pMainWindow->setWindowTitle(QStringLiteral("主界面-半模式对话框"));
    qDebug() << QStringLiteral("立即运行");
    1. 主界面被阻塞,不能进行点击、拖动等任何操作。
    2. show()之后的代码会立即执行。

    更多参考

    展开全文
  • 简述 关于“模式”和“非模式”对话框,相信大家都比较熟悉,但其中有一个可能很多人都比较陌生,介于两者之间的状态,我们称之为“半模式“。 简述 ...模式对话框有自己的事件循环,用户必须...

    简述

    关于“模式”和“非模式”对话框,相信大家都比较熟悉,但其中有一个可能很多人都比较陌生,介于两者之间的状态,我们称之为“半模式“。

    模式对话框

    描述

    阻塞同一应用程序中其它可视窗口输入的对话框。模式对话框有自己的事件循环,用户必须完成这个对话框中的交互操作,并且关闭了它之后才能访问应用程序中的其它任何窗口。模式对话框仅阻止访问与对话相关联的窗口,允许用户继续使用其它窗口中的应用程序。

    显示模态对话框最常见的方法是调用其exec()函数,当用户关闭对话框,exec()将提供一个有用的返回值,并且这时流程控制继续从调用exec()的地方进行。通常情况下,要获得对话框关闭并返回相应的值,我们连接默认按钮,例如:”确定”按钮连接到accept()槽,”取消”按钮连接到reject()槽。另外我们也可以连接done()槽,传递给它Accepted或Rejected。

    效果

    这里写图片描述

    源码

    MainWindow *pMainWindow = new MainWindow();
    pMainWindow->setWindowTitle(QStringLiteral("主界面"));
    pMainWindow->show();
    
    CustomWindow *pDialog = new CustomWindow(pMainWindow);
    pDialog->setWindowTitle(QStringLiteral("模式对话框"));
    
    // 关键代码
    pDialog->exec();
    
    // 关闭模态对话框以后才会执行下面的代码
    pMainWindow->setWindowTitle(QStringLiteral("主界面-模式对话框"));
    qDebug() << QStringLiteral("关闭模态对话框以后,可以继续向下执行");
    1. 主界面被阻塞,不能进行点击、拖动等任何操作。
    2. exec()之后的代码不会执行,直到关闭模态对话框。

    非模式对话框

    描述

    和同一个程序中其它窗口操作无关的对话框。在文字处理中的查找和替换对话框通常是非模式的,允许用户同时与应用程序的主窗口和对话框进行交互。调用show()来显示非模式对话框,并立即将控制返回给调用者。

    如果隐藏对话框后调用show()函数,对话框将显示在其原始位置,这是因为窗口管理器决定的窗户位置没有明确由程序员指定,为了保持被用户移动的对话框位置,在closeEvent()中进行处理,然后在显示之前,将对话框移动到该位置。

    效果

    这里写图片描述

    源码

    MainWindow *pMainWindow = new MainWindow();
    pMainWindow->setWindowTitle(QStringLiteral("主界面"));
    pMainWindow->show();
    
    CustomWindow *pDialog = new CustomWindow(pMainWindow);
    pDialog->setWindowTitle(QStringLiteral("非模式对话框"));
    
    // 关键代码
    pDialog->show();
    
    // 下面的代码会立即运行
    pMainWindow->setWindowTitle(QStringLiteral("主界面-非模式对话框"));
    qDebug() << QStringLiteral("立即运行");
    1. 主界面不会被阻塞,可以进行点击、拖动等任何操作。
    2. show()之后的代码会立即执行。

    半模式对话框

    描述

    调用setModal(true)或者setWindowModality(),然后show()。有别于exec(),show() 立即返回给控制调用者。

    对于进度对话框来说,调用setModal(true)是非常有用的,用户必须拥有与其交互的能力,例如:取消长时间运行的操作。如果使用show()和setModal(true)共同执行一个长时间操作,则必须定期在执行过程中调用QApplication ::processEvents(),以使用户能够与对话框交互(可以参考QProgressDialog)。

    效果

    这里写图片描述

    源码

    MainWindow *pMainWindow = new MainWindow();
    pMainWindow->setWindowTitle(QStringLiteral("主界面"));
    pMainWindow->show();
    
    CustomWindow *pDialog = new CustomWindow(pMainWindow);
    pDialog->setWindowTitle(QStringLiteral("半模式对话框"));
    
    // 关键代码
    pDialog->setModal(true);
    pDialog->show();
    
    // 下面的代码会立即运行
    pMainWindow->setWindowTitle(QStringLiteral("主界面-半模式对话框"));
    qDebug() << QStringLiteral("立即运行");
    1. 主界面被阻塞,不能进行点击、拖动等任何操作。
    2. show()之后的代码会立即执行。

    更多参考

    转载于:https://www.cnblogs.com/itrena/p/5938351.html

    展开全文
  • 模式对话框 描述 阻塞同一应用程序中其它可视窗口输入的对话框。模式对话框有自己的事件循环,用户必须完成这个对话框中的交互操作,并且关闭了它之后才能访问应用程序中的其它任何窗口。模式对话框仅阻止访问与...

    模式对话框


    描述
    阻塞同一应用程序中其它可视窗口输入的对话框。模式对话框有自己的事件循环,用户必须完成这个对话框中的交互操作,并且关闭了它之后才能访问应用程序中的其它任何窗口。模式对话框仅阻止访问与对话相关联的窗口,允许用户继续使用其它窗口中的应用程序。

    显示模态对话框最常见的方法是调用其exec()函数,当用户关闭对话框,exec()将提供一个有用的返回值,并且这时流程控制继续从调用exec()的地方进行。通常情况下,要获得对话框关闭并返回相应的值,我们连接默认按钮,例如:”确定”按钮连接到accept()槽,”取消”按钮连接到reject()槽。另外我们也可以连接done()槽,传递给它Accepted或Rejected。

    如当我们用QtCreator打开一个项目或文件时,会出现以下画面

    我们可以正常点击模式对话框里的内容,并且可以放大和缩小对话框。

    但是我们不能点击除了模式对话框以外的对话框,包括主界面,(当然可以点击其他程序的对话框,如QQ)

    只有当我点击  打开   或   取消    后才能退出模式对话框,只有模式对话框退出后程序才能继续运行

    以下的代码都以mainwindow为主基类

    实例代码:主函数

    #include "mainwindow.h"
    #include <QApplication>
    #include <QDialog>
    #include <QtDebug>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.setWindowTitle(QObject::tr("主界面"));
        w.show();
        QDialog *dlg=new QDialog(&w);
        dlg->setWindowTitle(QObject::tr("模式对话框"));
        dlg->exec();
        qDebug()<<"退出模式对话框"<<endl;
        w.setWindowTitle(QObject::tr("主界面模式对话框"));
        return a.exec();
    }

    运行结果:

    非模式对话框


    描述
    和同一个程序中其它窗口操作无关的对话框。在文字处理中的查找和替换对话框通常是非模式的,允许用户同时与应用程序的主窗口和对话框进行交互。调用show()来显示非模式对话框,并立即将控制返回给调用者。
    如果隐藏对话框后调用show()函数,对话框将显示在其原始位置,这是因为窗口管理器决定的窗户位置没有明确由程序员指定,为了保持被用户移动的对话框位置,在closeEvent()中进行处理,然后在显示之前,将对话框移动到该位置。

    我们不仅可以点击非模式对话框,还可以点击主界面

    实例代码:

    #include "mainwindow.h"
    #include <QApplication>
    #include <QDialog>
    #include <QtDebug>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.setWindowTitle(QObject::tr("主界面"));
        w.show();
        QDialog *dlg=new QDialog(&w);
        dlg->setWindowTitle(QObject::tr("非模式对话框"));
        dlg->show();
        w.setWindowTitle(QObject::tr("主界面非模式对话框"));
        qDebug() << QStringLiteral("非模式对话框可立即执行");
        return a.exec();
    }

     

    半模式

    调用setModal(true)或者setWindowModality(),然后show()。有别于exec(),show() 立即返回给控制调用者。

    对于进度对话框来说,调用setModal(true)是非常有用的,用户必须拥有与其交互的能力,例如:取消长时间运行的操作。

    也就是说,半模式介于模式和非模式之间,程序可以再打开半模式对话框后继续运行,但是不能点击主界面

    实例代码:

    #include "mainwindow.h"
    #include <QApplication>
    #include <QDialog>
    #include <QtDebug>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.setWindowTitle(QObject::tr("主界面"));
        w.show();
        QDialog *dlg=new QDialog(&w);
        dlg->setWindowTitle(QObject::tr("半模式对话框"));
        dlg->setModal(true);
        dlg->show();
        w.setWindowTitle(QObject::tr("主界面半模式对话框"));
        qDebug() << QStringLiteral("半模式对话可立即执行");
        return a.exec();
    }

     

     

     

     

    展开全文
  • 模式对话框 描述 阻塞同一应用程序中其它可视窗口输入的对话框。模式对话框有自己的事件循环,用户必须完成这个对话框中的交互操作,并且关闭了它之后才能访问应用程序中的其它任何窗口。模式对话框仅阻止访问与...
  • 创建无模式对话框

    2016-12-15 18:17:30
    在MFC的对话框程序中,对于初学者来说我们经常调用的是无模式对话框,因为它比较常见,而且简单,那么如何创建无模式对话框呢? 首先我们通过资源编辑器生成对话框资源,具体过程为: menu->insert->resource->...
  • 在IE下,如果在模式对话框中提交表单后关闭模式对话框会出现弹出一个新页面的问题,关闭的也是新页面。如下图 解决方法: 在 后面加上就可以了
  • 创建无模式对话框

    2010-11-21 01:27:00
    创建无模式对话框 收藏 在MFC的对话框程序中,对于初学者来说我们经常调用的是无模式对话框,因为它比较常见,而且简单,那么如何创建无模式对话框呢? 首先我们通过资源编辑器生成对话框资源,...
  • 模式对话框:  window.showModalDialog(sURL [, vArguments] [, sFeatures]) ; 参数说明:  sURL  必选参数,类型:字符串。用来指定对话框要显示的文档的URL。  vArguments  可选参数,类型:变体...
  • React中的模式对话框

    2018-07-30 13:52:56
    在16.x版本之后React提供了Protals功能来解决模式对话框不在Dom根节点导致的一些BUG。除了Protal还有更多的方法去解决这些问题,本文来自David Gilbertson的博客,详细解释了React中模式对话框的一些问题,以及他给...
  • js模式对话框

    2012-07-13 11:08:03
    Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如:  showModalDialog() (IE 4+ 支持)  showModelessDialog() (IE 5...
  • 旧文黏贴 模式对话框

    2010-05-23 01:05:00
    【2】对话框可以分为模式对话框和无模式对话框两种,两者区别是在对话框被关闭之前用户能否在同一应用程序的其他地方进行工作。举例说明:打开文件对话框便是典 型的模式对话框,在你选择好要打开的文件按下确定后,...
  • 关于非模式对话框

    2008-11-14 17:20:00
    1 前言MFC开发过程中起始有很多...本文介绍无模式对话框的内存管理。1.1 约定l 五号宋体斜字体表示:特定定义;l 小五号Arial字体表示:VC++代码使用l 五号楷体字体表示:类名称、类对象2 正文无模式对话框即Mod
  • MFC消息机制,UI线程,工作线程,模式对话框原理,非模式对话框原理
  • Kotlin入门(20)几种常见对话框

    千次阅读 2018-09-27 22:58:55
    提醒对话框 手机上的App极大地方便了人们的生活,很多业务只需用户拇指一点即可轻松办理,然而这也带来了一定的风险,因为有时候用户并非真的想这么做,只是不小心点了一下而已,如果App不做任何提示的话,继续吭哧...
  • Js 模式对话框

    2012-01-08 13:11:55
    常见问题: 1,如何在模态对话框中进行提交而不新开窗口? 如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframe的name。对于IE4+,你可以用高度为0的frame来作:...
  • js模式对话框控制

    2010-09-19 09:45:00
    Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如:  showModalDialog() (IE 4+ 支持)  showModelessDialog() (IE 5+ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,219
精华内容 16,887
关键字:

常见的模式对话框