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", "About this application");  

三、自定义弹出框


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

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


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

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

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

QMessageBox::StandardButton rb = QMessageBox::question(NULL, "Show Qt", "Do you want to show Qt dialog?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);   
if(rb == QMessageBox::Yes)   
{   
        QMessageBox::aboutQt(NULL, "About Qt");   
}  

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

QMessageBox message(QMessageBox::NoIcon, "Show Qt", "Do you want to show Qt dialog?", QMessageBox::Yes | QMessageBox::No, NULL);   
if(message.exec() == QMessageBox::Yes)   
{   
        QMessageBox::aboutQt(NULL, "About Qt");   
}  

四、究极弹出框

对,究极自定义弹出框。

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

调用自定义类 CMessage

.h
CMessage m_message;//声明成员变量

.cpp
m_message.show();
QPoint point = cursor().pos();
m_message.move(point.x(),point.y());//弹出框跟随鼠标点击位置

自定义类CMessage

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

emit sigOk();

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值