Qt598x64vs2017.跨线程传递std::string
1、Qt编译的时候 提示 str::string 需要在main(...)中注册什么的(大概是这个意思,记不清了),于是 在main(...)中调用了 “qRegisterMetaType<std::string>("std::string");”
提示 “str::string&”需要注册的话,是这样注册的:“qRegisterMetaType<std::string>("std::string&");”
2、测试代码:
2.1、MainWindow.h
class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow(); private slots:
void on_pbtnThread_clicked();
void slot01(std::string str);
}; class TthreadZ :public QThread
{
Q_OBJECT
public:
explicit TthreadZ(QObject *parent = nullptr){ }
~TthreadZ(){} protected:
void run(); signals:
void signal01(std::string str); };
2.2、MainWindow.cpp
void MainWindow::slot01(std::string str)
{
DWORD dwThreadId = ::GetCurrentThreadId(); qDebug() << "MainWindow.dwThreadId : " << dwThreadId << ", " << str.c_str();
} void MainWindow::on_pbtnThread_clicked()
{
TthreadZ* p = new TthreadZ(); connect(p, &TthreadZ::signal01, this, &MainWindow::slot01);// ZC: 注意这里的参数 函数指针 p->start();
} void TthreadZ::run()
{
while ()
{
DWORD dwThreadId = ::GetCurrentThreadId(); DWORD dw1 = ::GetTickCount();
std::string str = std::to_string(dw1);
emit signal01(str);// <-- <-- <-- <-- <--
DWORD dw2 = ::GetTickCount(); qDebug() << "TthreadZ.dwThreadId : " << dwThreadId;// << ". Take time : " << dw1 << " --> " << dw2 << " : " << (dw2-dw1)<<"ms"; // if (g_pMainWindow != nullptr)
// g_pMainWindow->UpdateCnt(); Sleep();
//qDebug() << "";
}
}
2.3、main.cpp
#include <string>
using namespace std; int main(int argc, char *argv[])
{
qRegisterMetaType<std::string>("std::string");// <-- <-- <-- <-- <-- QApplication a(argc, argv); MainWindow w;
w.show(); return a.exec();
}
3、
4、
5、
Qt598x64vs2017.跨线程传递std::string的更多相关文章
- ThreadLocal的坑--ThreadLocal跨线程传递问题
1.父子线程间的传递问题 ThreadLocal的子类InheritableThreadLocal其实已经帮我们处理好了,通过这个组件可以实现父子线程之间的数据传递,在子线程中能够父线程中的Threa ...
- jmeter的cookie跨线程传递
测试计划需要设置成独立运行每个线程组获取cookie需要先执行才能使接下来的cookie使用正确执行 登录线程组登录,使用正则表达式提取器提取所需cookie然后使用BeanShellPostProc ...
- 跨线程传递栈变量带来异常指针Crash
在手Q动漫的一份古老的代码中,现网发现少数crash,错误代码示例: char str[100] = "hello"; dispatch_async(dispatch_get_ma ...
- Jmeter(五十二) - 从入门到精通高级篇 - jmeter之跨线程组传递参数(详解教程)
1.简介 之前分享的所有文章都是只有一个线程组,而且参数的传递也只在一个线程组中,那么如果需要在两个线程组中传递参数,我们怎么做呢?宏哥今天就给小伙伴或者童鞋们讲解一下,如何实现在线程组之间传递参数. ...
- .NET设计篇08-线程统一取消模型和跨线程访问UI
知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂,输出倒逼输入 内容目录 一.线程统一取消模型1.取消令牌2.可以中断的线程1.设计一个中断函数2.创建CancellationTokenSour ...
- .NET设计篇08-线程取消模型和跨线程访问UI
知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂,输出倒逼输入 内容目录 一.线程统一取消模型1.取消令牌2.可以中断的线程1.设计一个中断函数2.创建CancellationTokenSour ...
- Jmeter系列(45)- 详解 Jmeter 跨线程组取参数值的方法,免代码!
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 用过 Jmeter 的同学应该都 ...
- Jmeter跨线程组传递参数
Jmeter的线程组之间是相互独立的,各个线程组互不影响,所以线程组A中输出的参数,是无法直接在线程组B中被调用的. 但有时候为了方便,可以把不同模块接口放在不同线程组,就涉及不同线程组传参问题,比如 ...
- Jmeter 跨线程组传递参数 之两种方法
终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...
随机推荐
- 建立component的多种方法
vue之component 在Vue.js中定义组件模板的七种方式 终于搞懂了vue 的 render 函数(一) Vuejs2.0学习(Render函数,createElement,vm.$slot ...
- exam9.3
# 用 户 名 公园 计划 抽卡 总分 19 859乔屹 100 03:15:05 40 03:14:01 140 03:15:05 emm 怎么讲 T2我把自己优化掉了40分 优 ...
- (2)打鸡儿教你Vue.js
var obj = {} Object.defineProperty(obj, 'msg', { // 设置 obj.msg = "1" 时set方法会被系统调用 参数分别是设置后 ...
- 牛客OI周赛10-提高组:B-Taeyeon的困惑(值域线段树)
做法 单点加单点删,在值域线段树上直接二分就能求值前\(K\)小的和 Code #include<bits/stdc++.h> typedef long long LL; const LL ...
- 前端代码规范-CSS
CSS规范 一.命名规范BEM(Block Element Modifier) 1.Block name -- 实体名称中的单词之间用连字符分隔(-) HTML <div class=" ...
- Java基本的线程操作(附代码)
啦啦啦啦,从头整理一遍java并发的内容.开始是基本的线程操作 线程状态切换: 新建线程: @Test public void newTread(){ Thread t1 = new Thread(n ...
- 关于bootstrap table 固定列宽
首先为table 设置 style="table-layout: fixed;" <table id="assessStage" data-height= ...
- Apache Flink - 常见数据流类型
DataStream: DataStream 是 Flink 流处理 API 中最核心的数据结构.它代表了一个运行在多个分区上的并行流.一个 DataStream 可以从 StreamExecutio ...
- regasm注册com组件
注意: regasm.exe在不同framework版本下的系统路径 一般存储的路径为:C:\Windows\Microsoft.NET\Framework\v2.0.50727\ 系统的版本不同,运 ...
- 一键分享QQ、微信、微博等
github上找到的,合并了一个二维码在线支持API,直接修改样式可用. 二维码API说明网址:http://www.liantu.com/pingtai/ <html> <head ...