阅读 116

Qt多个窗口共有一个提示框类

我们在用QT做开发的时候会发现,很多情况下需要弹一些提示框告诉用户一些信息。

一般情况下我们会直接想到,使用QMessageBox直接提示不就好了。

但是在一些大的项目里面,为了更好的显示效果,UI美工会做出一些好看的提示页面,如果这样的话,就需要我们自己定义一个提示框类了。

尤其是我们的程序不再是可控的时候,阻塞的MessageBox消息很明显就是一个弊端了。

假设现在大一点的项目需要平板与PC机交互。

由平板来触发PC机的一些操作,最简单的我们可以使用TCP通讯,那么当平板触发PC机消息出错时,你觉得用阻塞的方式弹提示框,这样子稳妥吗?

显而易见,根据实际情况肯定是不可以的。

那么我们需要对这个提示框类做处理,不再是继承QDialogEx,而是QWidget了。

为了做到多个页面都兼容这个提示框类,难道要每个页面都new一个这样的提示框类吗?

这样子,也是比较消耗资源的,这种做法也是不采取的。

我们在开发的项目中,定义一个全局的提示框类,假设叫做:QTipsInforWidget

首先,创建当前提示框类

QTipsInforWidget *m_TipsDlg = new QTipsInforWidget; m_TipsDlg->hide(); 默认不显示当前页面,而且不给该指定任何父窗口。这是重点。

那不指定父窗口,该显示到哪个页面上呢?

当我们哪个窗口再调用该类的时候,再给该提示框类指定具体的父窗口信息

m_TipsDlg->setTips("提示内容", this);

我们在QTipsInforWidget::setTips的具体操作,如下:

QTipsInforWidget::setTips(QString qsTips, QWidget* widgetParent) {     this->setParent(widgetParent);     //具体的现实操作 }

这样的操作,就实现了多个窗口可以公用一个提示框类,并且该提示框类属于当前窗口。

其实,看到这里,很多人就说,一个程序只考虑每次只弹一个提示框,那么要是想顺序的提示信息,或者是一次性触发多个提示信息,该如何解决呢?(哈哈,先留一个疑惑,这个问题下次说明啦~)

记得最重要的一点是,在关闭主程序的时候,一定要将提示框的父类置nullptr,否则程序崩溃你都无从下手。

在整个项目中,保证唯一的new以及唯一的delete,并且new的时候没有父窗口,当我们销毁的时候也不要将该类附着在任意一个窗口上。

避免了,指定的父窗口指针已经消息了,但是你得提示框类才保留着该父指针,不崩溃就怪了~

好了,今天的更新就到这里了,多个窗口简单调用一个提示框类信息~


作者:中国好公民st
链接:https://juejin.cn/post/7028370136654905358

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐