700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Qt总结:QMessageBox(原生态弹出框及究极超nice封装自定义弹出框)

Qt总结:QMessageBox(原生态弹出框及究极超nice封装自定义弹出框)

时间:2019-11-04 18:13:40

相关推荐

Qt总结:QMessageBox(原生态弹出框及究极超nice封装自定义弹出框)

一、前言

在Qt中经常需要弹出窗口,QMessageBox可以实现此功能,一共有三种窗口,information, question, 和 warning,critical, about分别对应感叹号,问号和叉号等等,使用方法很简单,一共有三个参数,第一个是父窗口句柄,剩下两个分别为窗口名称和显示内容,显示内容为QString类型。

二、常用弹出框

提示型:

QMessageBox::information(NULL,"Title","Content",QMessageBox::Yes,QMessageBox::Yes);

错误型:

QMessageBox::critical(NULL,"critical","Content",QMessageBox::Yes,QMessageBox::Yes);

警告型:

QMessageBox::warning(NULL,"warning","Content",QMessageBox::Yes,QMessageBox::Yes);

提问型:

QMessageBox::question(NULL,"question","Content",QMessageBox::Yes,QMessageBox::Yes);

关于对话框:

QMessageBox::about(NULL,"About","Aboutthisapplication");

三、自定义弹出框

自定义型,例如可以加图片:

QMessageBoxmessage(QMessageBox::NoIcon,"Title","Contentwithicon.");message.setIconPixmap(QPixmap("icon.png"));message.exec();

这里我们使用的是exec()函数,而不是show(),因为这是一个模态对话框,需要有它自己的事件循环,否则的话,我们的对话框会一闪而过。

同其他的程序类似,我们在程序中定义的相对路径都是要相对于运行时的.exe文件的地址的。比如我们写"icon.png",意思是是在.exe的当前目录下寻找一个"icon.png"的文件。

返回值处理,static函数都是要返回一个StandardButton,我们就可以通过判断这个返回值来对用户的操作做出相应。

QMessageBox::StandardButtonrb=QMessageBox::question(NULL,"ShowQt","DoyouwanttoshowQtdialog?",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);if(rb==QMessageBox::Yes){QMessageBox::aboutQt(NULL,"AboutQt");}

自定义对话框的判断方式:

QMessageBoxmessage(QMessageBox::NoIcon,"ShowQt","DoyouwanttoshowQtdialog?",QMessageBox::Yes|QMessageBox::No,NULL);if(message.exec()==QMessageBox::Yes){QMessageBox::aboutQt(NULL,"AboutQt");}

四、究极弹出框

对,究极自定义弹出框。

QWidget替换QMessageBox,同时设置好QSS,设计出的效果会比系统自带的MessageBox好看一丢丢。

调用自定义类CMessage

.hCMessage m_message;//声明成员变量.cppm_message.show();QPoint point = cursor().pos();m_message.move(point.x(),point.y());//弹出框跟随鼠标点击位置

自定义类CMessage

有一点需要注意,在点击【确定】时,触发信号传递信号,使得主窗口调用相应槽函数作出相应操作(比如删除文件等)

emit sigOk();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。