• QT添加二次确认功能,QMessageBox的使用


    对于一些重要的操作需要让用户再次确认一次,给出几个基本的实例

    是和否

    switch( QMessageBox::warning(NULL, "warning",QString::fromLocal8Bit("确定导入文件的频道吗?"), 

                                QMessageBox::Yes | QMessageBox::Default, 

                                QMessageBox::No | QMessageBox::Escape )) 

    case QMessageBox::Yes: 

        break; 

    case QMessageBox::No: 

    return; 

        switch( QMessageBox::warning(NULL, "warning",QString::fromLocal8Bit("确定导入文件的频道吗?"),
                                     QMessageBox::Yes | QMessageBox::Default,
                                     QMessageBox::No | QMessageBox::Escape ))
        {
        case QMessageBox::Yes:
            break;
        case QMessageBox::No:
            return;
        }
    

    文件未保存

    switch( QMessageBox::information( this, "Application name here", 

    "The document contains unsaved changes " 

    "Do you want to save the changes before exiting?", 

    "&Save", "&Discard", "Cancel", 

            0,      // Enter == button 0 

            2 ) ) { // Escape == button 2 

    case 0: // Save被点击或者Alt+S被按下或者Enter被按下。 

    // 保存 

    break; 

    case 1: // Discard被点击或者Alt+D被按下。 

    // 不保存但退出 

    break; 

    case 2: // Cancel被点击或者Alt+C被按下或者Escape被按下。 

    // 不退出 

    break; 

    switch( QMessageBox::information( this, "Application name here",
            "The document contains unsaved changes
    "
            "Do you want to save the changes before exiting?",
            "&Save", "&Discard", "Cancel",
            0,      // Enter == button 0
            2 ) ) { // Escape == button 2
        case 0: // Save被点击或者Alt+S被按下或者Enter被按下。
            // 保存
            break;
        case 1: // Discard被点击或者Alt+D被按下。
            // 不保存但退出
            break;
        case 2: // Cancel被点击或者Alt+C被按下或者Escape被按下。
            // 不退出
            break;
    }

    重试与放弃

    switch( QMessageBox::warning( this, "Application name here", 

    "Could not save the user preferences, " 

    "because the disk is full.  You can delete " 

    "some files and press Retry, or you can " 

    "abort the Save Preferences operation.", 

            QMessageBox::Retry | QMessageBox::Default, 

            QMessageBox::Abort | QMessageBox::Escape )) { 

    case QMessageBox::Retry: // Retry被点击或者Enter被按下。 

    // 再次尝试 

    break; 

    case QMessageBox::Abort: // Abort被点击或者Escape被按下。 

    // 放弃 

    break; 

    switch( QMessageBox::warning( this, "Application name here",
            "Could not save the user preferences,
    "
            "because the disk is full.  You can delete
    "
            "some files and press Retry, or you can
    "
            "abort the Save Preferences operation.",
            QMessageBox::Retry | QMessageBox::Default,
            QMessageBox::Abort | QMessageBox::Escape )) {
        case QMessageBox::Retry: // Retry被点击或者Enter被按下。
            // 再次尝试
            break;
        case QMessageBox::Abort: // Abort被点击或者Escape被按下。
            // 放弃
            break;
    }

    自定义的提示方式

    如果没有任何标准消息框是合适地,你可以自己手工创建一个QMessageBox并且自己定义按钮文本:  

    QMessageBox mb( "Application name here", 

    "Saving the file will overwrite the original file on the disk. " 

    "Do you really want to save?", 

            QMessageBox::Information, 

            QMessageBox::Yes | QMessageBox::Default, 

            QMessageBox::No, 

            QMessageBox::Cancel | QMessageBox::Escape ); 

    mb.setButtonText( QMessageBox::Yes, "Save" ); 

    mb.setButtonText( QMessageBox::No, "Discard" ); 

    switch( mb.exec() ) { 

    case QMessageBox::Yes: 

    // 保存并且退出 

    break; 

    case QMessageBox::No: 

    // 不保存退出 

    break; 

    case QMessageBox::Cancel: 

    // 不保存并且不退出 

    break; 

    如果没有任何标准消息框是合适地,你可以自己手工创建一个QMessageBox并且自己定义按钮文本: 
    QMessageBox mb( "Application name here",
            "Saving the file will overwrite the original file on the disk.
    "
            "Do you really want to save?",
            QMessageBox::Information,
            QMessageBox::Yes | QMessageBox::Default,
            QMessageBox::No,
            QMessageBox::Cancel | QMessageBox::Escape );
    mb.setButtonText( QMessageBox::Yes, "Save" );
    mb.setButtonText( QMessageBox::No, "Discard" );
    switch( mb.exec() ) {
        case QMessageBox::Yes:
            // 保存并且退出
            break;
        case QMessageBox::No:
            // 不保存退出
            break;
        case QMessageBox::Cancel:
            // 不保存并且不退出
            break;
    }
    

    其他相关

    按钮类型有:

    • Ok - 单按钮消息框地默认值
    • Cancel - 注意这个不是自动和Escape关联的
    • Yes
    • No
    • Abort
    • Retry
    • Ignore

    按钮类型可以由上述类型和下面两个修饰成分使用或“|”来进行组合。

    • Default - 让按Enter键等于点击这个按钮。通常用于OK、Yes或者其它相似的。
    • Escape - 让按Escape键等于点击这个按钮。通常用于Abort、Cancel或者其它相似的
  • 相关阅读:
    如何设置ASP.NET页面的运行超时时间
    日志文件清理工具V1.1
    【原创】日志文件清理工具V1.0
    【分享】国外后台界面HTML源码 [免费]
    【分享】仿东软OA协同办公服务管理源码
    年底发福利了——分享一下我的.NET软件开发资源
    由12306动态验证码想到的ASP.NET实现动态GIF验证码(附源码)
    【分享】元旦送礼,商业源码免费赠送!
    给大家分享一个jQuery TAB插件演示
    【分享】双12了,也没啥可送大家的,就送大家点商业源码吧!
  • 原文地址:https://www.cnblogs.com/yelanggu/p/4015327.html
Copyright © 2020-2023  润新知