各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究z
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)
Qt开发专栏:实用技巧(点击传送门)需求
在做应用程序的过程中,需要使用界面切换,界面切换到下一个界面使用new一个界面并显示,如系统设置,相关信息展示等等。
(注意:本技巧适用的条件是,主界面不需要相关的信号与槽做消息循环,因为主界面所运行的消息循环将停留在dialog的exec()并主要实现dialog内部的消息循环)
此需求,使用dialog做即可,可显示全屏也可不显示全屏,没必要使用QWidget,其造成切换时,内存释放问题(实际过程中:new出来的页面,退出该页面后delete,再按住ALT+F4退出程序,应用程序退出后会造成异常表现为出现“”停止运行“”)
原理使用dialog的exec()模态函数显示对画框,先使用showFullScreen(),再使用exec(),将实现全屏模态显示。
注意
切换到对话框界面
void StartWidget::on_pushButton_chengJi_clicked()
{
ChengJi chengJi();
chengJi.showFullScreen(); // 需要全屏,否则注视掉
chengJi.exec(); // 可判断返回值 QDialog::Accepted和QDialog::Rejected;
}
退出对话框界面
void ChengJi ::on_pushButton_exit_clicked()
{
accept(); // reject()也可以,其返回值 QDialog::Accepted和QDialog::Rejected;
}