QT多界面随意跳转,不闪烁

在很久之前,就弄过QT界面的切换,无非就是close和show的配合使用,比如父界面中show子界面,然后子界面close,父界面重新展示出来,这个是基本思路


但是,有一个问题,已经show的界面,如果再次show,则不能显示在界面最上层,即用户看不到


为了解决这个问题,我首先想到的是将之前show的界面先close,然后再show新的界面,但是这样先close本界面,再show另外一个界面的流程会倒置一个不好的效果:屏幕闪烁一下。所以试试先show新界面,然后再close老界面,这样close的界面在当前show的界面的后面,用户眼睛感受不到,就不会有闪烁的感觉。


为了保证close老界面的操作一定在show新界面的时间轴后面执行,我这里考虑使用发送两种信号,第一个信号是show新界面,第二个信号是close老界面,为了保证close老界面的操作发生在show新界面完成之后执行,需要一定的延时。


我的思路:

两种办法可以解决这种延时,第一:定时器,第二:使用主线程和次线程通信的延时。

这里我使用的是第二种方法,在次线程的槽函数中close老界面

如果感觉有帮助到,麻烦点个赞!!!


源码地址如下:http://pan.baidu.com/s/1jIg1zwy

运行图片:


Qt ,可以使用信号与槽机制来实现界面跳转。 首先需要定义两个界面类,比如说 A 界面和 B 界面。然后在 A 界面添加一个按钮,当用户点击按钮时,可以通过信号与槽机制来实现跳转到 B 界面。 在 A 界面的头文件添加以下代码: ```cpp #include "B.h" // 包含 B 界面的头文件 class A : public QWidget { Q_OBJECT // 必须添加 Q_OBJECT 宏定义 public: A(QWidget *parent = nullptr); ~A(); private slots: void on_pushButton_clicked(); // 按钮的槽函数 private: Ui::A *ui; B *b; // 创建 B 界面的对象 }; ``` 在 A 界面的源文件,实现按钮的槽函数: ```cpp void A::on_pushButton_clicked() { b = new B(this); // 创建 B 界面的对象 b->show(); // 显示 B 界面 this->hide(); // 隐藏 A 界面 } ``` 这样,当用户点击 A 界面上的按钮时,就会跳转到 B 界面,同时隐藏 A 界面。 在 B 界面同样可以添加一个按钮,实现从 B 界面跳转回 A 界面的功能。方法类似,只需要在 B 界面的槽函数添加以下代码: ```cpp void B::on_pushButton_clicked() { emit showA(); // 发送信号 showA this->close(); // 关闭 B 界面 } ``` 然后在 A 界面添加一个槽函数,用于接收 B 界面发送的信号 showA: ```cpp connect(b, SIGNAL(showA()), this, SLOT(show())); // 接收信号 showA ``` 这样,当用户在 B 界面点击按钮时,就会发送信号 showA,A 界面接收到信号后就会显示出来,实现了从 B 界面跳转回 A 界面的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值