Qt学习笔记——线程相关(暂时这么记

自学理解的内容,所以或许会有错误= = ,暂时记着

大部分内容来自豆子大大的 Qt学习之路2

 

QThread类

 

继承QThread类

重写run()函数实现线程动作

可调用exec()函数进行线程循环

 

new 一个对象

通过该对象的start()函数启动线程

 

class Thread : public QThread
{
protected:
    void run() {
        /* ... 初始化 ... */
        exec();
    }
};

 

 

有关线程,做的是:

  • QThread子类添加信号。这是绝对安全的,并且也是正确的(前面我们已经详细介绍过,发送者的线程依附性没有关系)

 

不应该做的是:

  • 调用moveToThread(this)函数

  • 指定连接类型:这通常意味着你正在做错误的事情,比如将QThread控制接口与业务逻辑混杂在了一起(而这应该放在该线程的一个独立对象中)

  • QThread子类添加槽函数:这意味着它们将在错误的线程被调用,也就是QThread对象所在线程,而不是QThread对象管理的线程。这又需要你指定连接类型或者调用moveToThread(this)函数

    • connect一般是在主线程进行调用。

    • 关于此处,意思为,connect 链接的槽函数,需独立出来,放在一个类中,不应该放在QThread中,而且,需要进行这个线程槽函数操作,可选择槽函数独立写一个类,然后槽函数增加信号,使用另外的一个对象的信号链接QThread子类的信号,QThread子类链接独立类的槽函数来完成操作

  • 使用QThread::terminate()函数

不能做的是:

  • 在线程还在运行时退出程序。使用QThread::wait()函数等待线程结束

  • QThread对象所管理的线程仍在运行时就销毁该对象。如果你需要某种“自行销毁”的操作,你可以把finished()信号同deleteLater()槽连接起来

 

 

那么,什么时候应该使用线程?

  • 当你不得不使用同步 API 的时候。
  • 当你希望扩展到多核应用的时候。
  • 当你不想被别人阻塞的时候。

 

那么,什么情况下不应该使用线程?

  • 定时器                                   有了更加简便的操作,使用定时器进行定时任务明显是个更好的选择
  • 网络/状态机                           在Qt中网络部分的操作已经是异步的了,所以不需要用上QThread进行异步操作
  • 将任务分割成若干部分          有其他更加简便的方式进行
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
天气预报是一个非常实用的个人项目,它可以帮助我们及时了解当地的天气情况,帮助我们合理安排日常生活和外出计划。 我的qt个人项目天气预报主要包括以下功能: 1. 实时天气查询:通过调用天气API,可以实时获取当地的天气信息,包括温度、湿度、风力、空气质量等指标。用户可以根据自己的需求选择查询当天或未来几天的天气情况。 2. 城市选择和管理:用户可以通过界面上的搜索功能输入城市名字查询该城市的天气情况。同时,用户还可以通过添加和删除城市的功能,方便地管理自己关注的城市列表。 3. 天气图标和背景:界面上会显示对应的天气图标,如晴天、多云、雨天等,以直观地展示当前的天气情况。同时,根据不同的天气状况,背景图片也会相应地进行变化,增加界面的美观性和可视化效果。 4. 未来天气预测:除了显示当天的天气情况外,我的个人项目还可以提供未来几天的天气预测,帮助用户更全面地了解未来几天的天气变化趋势。 通过这个个人项目,用户可以方便地获取并查看天气信息,从而更好地做出日常生活安排。此外,用户还可以根据天气预报的变化,做出适应性的衣物搭配和外出计划,提高生活效率和便利性。 总之,我的qt个人项目天气预报能够为用户提供准确、及时的天气信息,并通过直观的界面展示,帮助用户做出合理的日常生活安排和外出计划。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值