QT多线程
来源:互联网 发布:非农数据软件 编辑:程序博客网 时间:2024/04/30 12:18
QT下多线程大概就是继承QThread这个类然后复写run()函数
下面是我写的一个QThread类。
其中包括子线程像主线程发送消息:
.h文件
#ifndef DY_SHOW_THREAD_H#define DY_SHOW_THREAD_H#include <QThread>class dy_show_thread:public QThread{ Q_OBJECTpublic: dy_show_thread(); void setMessage(void* msg,QObject *parent = NULL); void stop();protected: void run();private: void * msg; volatile bool stopped; //volatile variable QObject* window;};#endif // DY_SHOW_THREAD_H
cpp实现文件
#include "dy_show_thread.h"#include "dy_barrage_client.h"#include <unistd.h>#include "douyumainwindow.h"dy_show_thread::dy_show_thread(){ stopped = false; msg = NULL; window = NULL;}// zzzzvoid dy_show_thread::run(){ if(msg == NULL || window == NULL) return ; qDebug("msg and window in dy_show thread != NULL"); dy_barrage_client *dyc = (dy_barrage_client *)msg; DouyuMainWindow* w = (DouyuMainWindow *)window; QString name = ""; QString say = ""; while(!stopped) { //to do . dyc->get_dy_server_msg(name,say); //qDebug()<<name +"[in thread]:"+say; if(name != "" || say != "") QMetaObject::invokeMethod(w,"addLine",Q_ARG(QString,name), Q_ARG(QString,say)); }}void dy_show_thread::setMessage(void *msg, QObject *parent){ this->msg = msg; this->window = parent;}void dy_show_thread::stop(){ stopped = true;}
这里发送消息用到的是这个:
QMetaObject::invokeMethod(w,"addLine",Q_ARG(QString,name), Q_ARG(QString,say));
w是主线程的句柄(大概叫这个意会)指针,第二个参数是调用的参数名字,有一个要求就是这个函数在主线程的那个类必须是个槽~ 对 就是个槽。 后面的就是参数了若干个参数按下面形式写即可
主线程的函数如下所示这里只列出函数:
public slots: void addLine(QString name, QString say);
还有就是QT下 tableview自己滚动滚动条到最下面 ,用这个:
ui->tableView->scrollToBottom();
前面的指针需要换一下, 记住后面的参数就好。
0 0
- Qt多线程
- Qt多线程
- Qt多线程
- qt 多线程
- Qt多线程
- QT多线程
- QT多线程
- QT多线程
- Qt多线程
- qt 多线程
- Qt多线程
- QT 多线程
- qt 多线程
- qt多线程
- Qt 多线程
- Qt多线程
- Qt 多线程
- Qt多线程 .
- 动态更改textview的字体大小
- Hadoop笔记六之Hdfs的基本shell操作
- iOS设置[self.navigationItem setTitleView:View]
- 【zzuli】1905: 小火山的跳子游戏
- java中Date.getTime() BUG-2016-08-10
- QT多线程
- POJ 2778-DNA Sequence(AC自动机+构建邻接矩阵+矩阵快速幂)
- Java8 Lambda表达式教程
- UnsatisfiedLinkError问题
- 内管管理的置换算法
- Android6.0Framework源码解析系列[目录]
- Spring 用注解Annotation注入 abstract 抽象父类的属性
- 一个简单,强大的自定义广告活动弹窗
- lintcode 75 Find Peak Element