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

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

是和否

[cpp] view plaincopyprint?

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;
    }

文件未保存

[cpp] view plaincopyprint?

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

"The document contains unsaved changes\n"

"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\n"
        "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;
}

重试与放弃

[cpp] view plaincopyprint?

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

"Could not save the user preferences,\n"

"because the disk is full.  You can delete\n"

"some files and press Retry, or you can\n"

"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,\n"
        "because the disk is full.  You can delete\n"
        "some files and press Retry, or you can\n"
        "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;
}

自定义的提示方式

[cpp] view plaincopyprint?

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

QMessageBox mb( "Application name here",

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

"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.\n"
        "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或者其它相似的
时间: 2024-10-16 05:54:11

QT添加二次确认功能,QMessageBox的使用的相关文章

qt for ios扫描二维码功能实现

问题: 公司项目考虑到跨平台一直都是用qt做,由于项目需求,项目上要增加一个二维码扫描功能,在安卓可以用QVideoProbe实现抓取摄像头视频帧,用QZxing解码图片,从而实现二维码扫描,但是在ios上,QVideProbe并不支持,所以只好选择其他抓取视频帧的方法,考虑使用OPencv实现抓取视频帧,但是在查看ios文档时,ios7 以上直接支持二维码扫描功能,所以放弃使用opencv抓取 + zxing解码的方法.从而采取ios官方提供的二维码解码功能. 实现: 由于我们项目ui一直是用

Django框架进阶6 多对多三种创建方式, Ajax, Content-Type前后端传输数据编码格式, Ajax发送文件数据, django内置的序列化功能, Ajax结合sweetalert实现删除二次确认, 批量插入数据, 自定义分页器, ajax结合sweetalert实现删除二次确认

多对多三种创建方式 1.全自动(较为常用) class Book(models.Model): title = models.CharField(max_length=32) authors = models.ManyToManyField(to='Author') # orm就会自动帮你创建第三张表 class Author(models.Model): name = models.CharField(max_length=32) ''' 好处:第三张表自己创建 不足之处:第三张表无法扩展额外

shopnc 商家中心添加打印商品二维码功能

需求中提到需要增加每一件商品可以打印,用于线下体验店实体商品的二维码标签,客人可以根据手机扫二维码功能进行购买 任务描述: 1.如附件实现”批量打印标签“和单个商品”打印“标签功能. 2.标签有两种”大标签“和”小标签“,样式祥见附件图. 一,单个打印标签 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra

Qt调用dll中的功能函数

DLL 优点 ------------------------------------- 1.扩展了应用程序的特性: 2.可以用许多种编程语言来编写: 3.简化了软件项目的管理: 4.有助于节省内存: 5.有助于资源共享: 6.有助于应用程序的本地化: 7.有助于解决平台差异: 8.可以用于一些特殊的目的.windows使得某些特性只能为DLL所用. 转载:http://www.cnblogs.com/hicjiajia/archive/2010/08/27/1810239.html Qt调用d

Android二维码功能实现,在程序内嵌入ZXing项目

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9526247 最近二维码真是越来越火了,随便电视上.网络上.商场里,到处都是二维码.而内嵌二维码扫描功能的软件也越来越多,QQ.微信.UC浏览器等等应用都可以对着二维码扫一扫,感觉我们自己的应用里不加上二维码扫描功能,都跟不上时代潮流了.所以今天我就将带着大家一起,在我们自己的程序里加入二维码扫描的功能. 不过,二维码功能如果真要做起来还是非常复杂的,从零开始实现不太现实,比较好的

JqueryMobile为Listview动态添加、删除查询功能

JqueryMobile的版本不同,引用JS的API也不同,因此为Listview动态添加.删除查询功能的代码也不同. 假设Listview控件内容如下: <ul data-role="listview" id="listview"  data-inset="true"> <li><a href="#">Acura</a></li> <li><a h

Android二维码功能实现,在程序内嵌入ZXing项目(转)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9526247 最近二维码真是越来越火了,随便电视上.网络上.商场里,到处都是二维码.而内嵌二维码扫描功能的软件也越来越多,QQ.微信.UC浏览器等等应用都可以对着二维码扫一扫,感觉我们自己的应用里不加上二维码扫描功能,都跟不上时代潮流了.所以今天我就将带着大家一起,在我们自己的程序里加入二维码扫描的功能. 不过,二维码功能如果真要做起来还是非常复杂的,从零开始实现不太现实,比较好的

为现有图像处理程序添加读写exif的功能

为现有图像处理程序添加读取exif的功能 exif是图片的重要参数,在使用过程中很关键的一点是exif的数据能够和图片一起存在.exif的相关功能在操作系统中就集成了,在csharp中也似乎有了实现.但是使用mfc来实现这个功能,的确费了我的一些时间.下面是我的实现方式. 读取exif,参考了网络资料 添加cexif.h和cexif.cpp,添加入现有程序 在需要读取的地方添加相关代码 FILE* hFile=fopen(FilePathName.c_str(),"rb"); if (

phpcms 移植【添加相关文章】功能

添加相关文章功能相当有用,移植一个过来基本上可以实现比较复杂的页面内包含分类功能,做二次开发时可以省下不少力气. 用例:如果一个产品,属于一个厂家,而这个厂家是动态添加的,既不是一个分类,而是一个厂家的模型,这二者关联的时候使用这个添加相关的功能可以轻易实现. 学会使用phpcms中的类别管理和推荐位管理基本上可以满足文章管理的多数场景,如果能够理解mysql表的设计,可以使用模型管理这个大杀器, 基本上能够想到的功能都能实现,最后再对[添加相关文章]功能进行设计和移植,模型功能能够再次爆发威力