【工具介绍-Qt】计概大作业之五,弹出询问窗,设置ico,AI操作时做出显示

由 联环己烷 发布

少废话,直接上预览!

s3.png

询问窗

搞询问窗,我们需要的类是QMessageBox

QMessageBox的几个定义参数:

QMessageBox *msgBox=new QMessageBox(QMessageBox::Question, "窗口标题",\
                          "窗口提示文字", QMessageBox::Yes | QMessageBox::No);//后面是下面使用的按钮,有Yes,No,OK等默认按钮

然后就是把按钮上的文字改成中文:

msgBox->button(QMessageBox::Yes)->setText("确定");
msgBox->button(QMessageBox::No)->setText("取消");

弹出询问窗:

res=msgBox->exec()

exec()会有个返回值,是用户按的按钮的名称。通过判断用户按的按钮,做出不同的操作:

if(res==QMessageBox::Yes) {}
else if(res==QMessageBox::No) {}

一个可爱的询问窗就做好了!(*╹▽╹*)

ico

或许你觉得图标太丑了,想要自己换一个?没问题!

首先你需要做一个素材,然后去百度一个在线的图片转ico的工具,做一个ico图标。

将图标放到你的源码文件目录下,然后打开xxx.pro(xxx是你的工程名字),在最后一行加一句:RC_ICONS = icon.icoicon.ico是你图标的文件名)

然后在主窗口中加入一条语句setWindowIcon(QIcon("icon.ico"));即可!

AI操作时做出显示

最后提一个情况,可能你的AI太慢了(QAQ),然后界面就会显示它卡死了,怎么办?

其实一句QCoreApplication::processEvents();就可以解决问题,它的功能是暂时跳过当前的事件,执行一些能执行的功能。执行什么功能,我也不太懂。

譬如说你希望AI操作的时候,paintEvent画出不同的事件,但发现实际上整个界面会卡死,甚至连AI执行前的paintEvent都执行不了。这是因为paintEvent的优先级是在你的所有程序执行之后的,想要在AI卡死时先更新界面,就需要使用上文说的语句。

一般来说,这条语句是用在循环里的,每循环几次,就暂跳一次。

可以用来制作加载进度条,但我就不扩展了。


暂无评论

发表评论


京公网安备 11010802033049号