qt qmessageboxx出来之后原来的主程序还在运行吗

25055人阅读
QT编程(37)
如何使用QMessageBox(用法举例)
QMessageBox是Qt编程中常用的类,使用方便。下面给出该类的普通用法实例,希望对你有所帮助。
1.包含头文件
#include &QMessageBox&
如果要打印出内容,还有添加头文件&QDebug&
QMessageBox message(QMessageBox::Warning,&Information&,&Really to clear data?&,QMessageBox::Yes|QMessageBox::No,NULL);
if (message.exec()==QMessageBox::Yes)
qDebug()&&&clicked yes\n&;
qDebug()&&&clicked no\n&;
在if语句中添加自己的程序。
请多参考帮助文档
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:954531次
积分:9671
积分:9671
排名:第1438名
原创:143篇
转载:72篇
评论:49条
(6)(3)(2)(1)(1)(2)(1)(1)(1)(1)(1)(6)(2)(1)(2)(9)(7)(39)(40)(14)(25)(20)(11)(5)(3)(4)(16)5859人阅读
QMessageBox类提供一条简短消息,一个图标和一些按钮的模式对话框,它的顶层布局(QGridLayout),包括了消息图标、消息文本和按钮集合
============================================================================================
QMessageBox::NoIcon 没有任何图标
QMessageBox::Information 消息图标
QMessageBox::Warning 警告消息
QMessageBox::Critical 严重
QMessageBox::NoButton 无图标
QMessageBox::Ok 确定
QMessageBox::Cancel 取消
QMessageBox::Yes 是
QMessageBox::No 否
QMessageBox::Abort 中断
QMessageBox::Retry 重试
QMessageBox::Ignore 取消
QMessageBox::Default(进行或运算),当Enter被按下时被击活
QMessageBox::Escape(进行或运算),当Esc被按下时被击活
QMessageBox::QMessageBox(QWidget *parent=0,const char *name=0)
构造父对象为parent,名字标识为name
QMessageBox::QMessageBox(const QString &caption,const QString &text,Icon icon,
&& & & & & & & & & & & & int button0,int button1,int button2,QWidget *parent=0,
&& & & & & & & & & & & & const char *name=0,bool modal=TRUE,WFlags f=WStyle_DialogBorder)
构造标题为caption,文本为text,图标为icon和最多为三个按钮的消息框
QMessageBox::~QMessageBox()
销毁消息框
void QMessageBox::about(QWidget *parent,const QString &caption,const QString &text)静态显示一个标题为caption文本为text的简单关于框
void QMessageBox::aboutQt(QWidget *parent,const QString &caption=QString::null)静态
显示关于该应用程序正在使用的QT版本号
int QMessageBox::critical(QWidget *parent,const QString &caption,const QString &text,int button0,int button1,int button2=0)静态打开一个标题为caption并且文本为text的严重消息框,该对话框最多有三个按钮,如果不想要三个按钮,可把最后一个或者最后二个设置为QMessageBox::NoButton
int QMessageBox::critical(QWidget *parent,const QString &caption,const QString &text,const QString &button0Text=QString::null,const QString &button1Text=QString::null,const QString &button2Text=QString::null,int defaultButtonNumber=0,int escapeButtonNumber=-1)虚
显示一个标题为caption、文本为text并且按钮分别为1、2、3的严重消息对话框。返回被点击的按钮的数字(0、1或2)。
Icon QMessageBox::icon() const
返回消息框的图标
const QPixmap *QMessageBox::iconPixmap() const
返回当前图标
int QMessageBox::information(QWidget *parent,const QString &caption,const QString &text,int button0,int button1=0,int button2=0)虚
打开一个标题为caption并且文本为text的消息框,点击返回按钮标识QMessageBox::Ok/QMessageBox::No等等
void QMessageBox::setButtonText(int button,const QString &text)
设置消息框按钮button的文本为text
void QMessageBox::setIcon(Icon icon)
设置消息框的图标
void QMessageBox::setIconPixmap(const QPixmap &)
设置当前图标
void QMessageBox::setText(const QString &)
设置被显示的消息框文本
void QMessageBox::setTextFormat(TextFormat)
设置消息框中显示的文本的格式
QString QMessageBox::text() const
返回被显示的消息框文本
TextFormat QMessageBox::textFormat() const
返回消息框中显示的文本的格式
int QMessageBox::warning(QWidget *parent,const QString &caption,const QString &text,int button0,int button1,int button2=0)静态
打开一个标题为caption文本为text的警告消息框
如果parent为0消息框变为应用程序全局的模式对话框
如果parent为一个窗口部件,消息框变为相对于parent的模式对话框
============================================================================================
以下是几种对话框:
先来看一下最熟悉的QMessageBox::information。我们在以前的代码中这样使用过:
QMessageBox::information(NULL,&&Title&,&&Content&,
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
下面是一个简单的例子:
如果我们想自定义图片的话,也是很简单的。这时候就不能使用这几个static的函数了,而是要我们自己定义一个QMessagebox来使用:
QMessageBox
message(QMessageBox::NoIcon,&&Title&,&&Content
with icon.&);&
message.setIconPixmap(QPixmap(&icon.png&));&
message.exec();
这里我们使用的是exec()函数,而不是show(),因为这是一个模态对话框,需要有它自己的事件循环,否则的话,我们的对话框会一闪而过哦(感谢laetitia提醒).
需要注意的是,同其他的程序类似,我们在程序中定义的相对路径都是要相对于运行时的.exe文件的地址的。比如我们写&icon.png&,意思是是在.exe的当前目录下寻找一个&icon.png&的文件。这个程序的运行效果如下:
============================================================================================
还有一个常见的问题:就是我们如何才能将QMessageBox对话框中的按钮改写成中文:
1,QT中如何显示中文呢?
QTextCodec*pCodec=QTextCodec::codecForName(&System&);//获取系统字体编码
QTextCodec::setCodecForLocale(pCodec);
QTextCodec::setCodecForCStrings(pCodec);
QTextCodec::setCodecForTr(pCodec);
如果你的操作系统当前是中文环境的话,就可以显示中文。
或者:#include &QtCore/QTextCodec&
QTextCodec::setCodecForTr(QTextCodec::codecForName(QTextCodec::codecForLocale()-&name()));
QTextCodec::setCodecForLocale(QTextCodec::codecForName(QTextCodec::codecForLocale()-&name()));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(QTextCodec::codecForLocale()-&name()));
2,通过第1步的操作就可以在文本中显示中文了,但是还不能在内置的QMessageBox按钮上面显示中文。
该怎么办呢?
(1)从QT安装目录下面将文件“qt_zh_CN.qm”复制一份到你的项目目录下。
例如,我是从“D:\QtSDK\Desktop\Qt\4.7.3\msvc2008\translations”目录下复制的“qt_zh_CN.qm”文件。
你的项目目录指你项目的.pro文件所在的目录。
(2)在项目目录中新建一个文本文件,输入如下内容:
& & &qresource prefix=&/&&
& & & & &file&qt_zh_CN.qm&/file&
& & &/qresource&
保存后,将该文本文件的后缀名由txt改为qrc,表明这是资源文件。
(3)在Qt Creator中将上述文件加到你的项目中。
(4)修改代码如下,表示要加载相应的资源文件。
& & QTranslator&oT
& &&oTranslator.load(&:/qt_zh_CN&);
// 注意此处字符串以“:/”开头,后接的字符串是刚才复制的qm文件的名字
& & QApplication oApp(argc, argv);
& & oApp.installTranslator(&oTranslator);
(5)重新编译、运行程序即可。
或者:(1)同上
&& & & &(2)加载该文件:
&& & & & & & QTranslator&oT
&& & & & & & oTranslator.load(&qt_zh_CN.qm&);&
&& & & & & &QApplication oApp(argc, argv);
&& & & & & &oApp.installTranslator(&oTranslator);
最好是在加载该文件的时候,首先判断下改文件是否存在:QFile &file(qt_zh_CN.qm);
bool &b = file.exists();
(3)重新编译、运行程序即可。
===========================================================================================
但是:用这个QMessageBox::information(this, sTitle, sMessage, &确定&, &取消&);
这样的效果岂不是更好,【注】:当我们用简单的思维思考问题的时候,问题就很简单;当我们用复杂的思维思考问题的时候,问题就会很复杂
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:119968次
积分:1368
积分:1368
排名:千里之外
原创:11篇
转载:43篇
评论:15条
(3)(8)(1)(5)(1)(9)(5)(1)(4)(1)(2)(7)(7)关于QTimer中调用QMessageBox会阻塞线程问题.
关于QTimer中调用QMessageBox会阻塞线程问题.
如果你实在需要用QMessageBox来提示信息的话,就用下面的方式.不过你要注意保护好内存.
hole-&guanJiangOverFlag = 0;
hole-&guanJiangOverStopFlag =
QMessageBox *
msgtest = new QMessageBox(this);
if (i == 1)
msgtest-&setText(&孔一:60分钟灌浆结束条件!&);
if (i == 2)
msgtest-&setText(&孔二:60分钟灌浆结束条件!&);
msgtest-&show();
感谢关注 Ithao123Qt频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊在使用QT的buttonbox、QMessageBox等默认控件时,会碰到编译运行后程序界面显示的为英文的情况,如下图:
这时希望将英文显示为中文,有多种方法:
1)放弃使用默认控件,将其改为自定义控件
2)使用qt的翻译文件:
QT的QTranslator对象可以用来将程序中用tr(&&)标识出来的字符串翻译成中文,从而使得在编程时不用考虑中文字符编码问题
在main函数中,用以下代码可以加载一个翻译文件:
QApplication a(argc, argv);
translator.load(&qt_zh_CN.qm&);
a.installTranslator(&translator);
其中,qt_zh_CN.qm文件即为qtCreator自带的翻译文件,在安装路径下的translations文件夹中。这里,用load方法加载时,需要将该文件拷到.exe文件相同目录下。
再次运行程序,默认控件中的字符串就变成中文了。如下图:
一个程序可以装载多个QTranslator对象,从而可以使用多个翻译文件,程序在查找字符串的翻译时,后加载的翻译文件会先被查找,因此,如果有自定义的翻译文件,
最好放在最后加载,这样程序会优先查找自定义的翻译文件。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2891次
排名:千里之外
原创:12篇匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 qmessagebox 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信