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直接用登录请求的参数即可,直 ...
随机推荐
- Mysql存储过程查询数据插入别的表里。
DELIMITER// CREATE PROCEDURE setRoomManger2() BEGIN ); ; DECLARE cur CURSOR FOR SELECT roomid FROM n ...
- QT中使用pri子工程
QT中使用pri子工程 使用子工程的作用是使得工程结构更加清晰,举个例子: 我制作了一个自定义控件,具备通用性,我打算把它用在日后的工程中.制作的这个控件需要用到头文件h.源文件c,资源文件qrc.图 ...
- Apache的安装和配置
一.官网下载Apache 官网地址:https://httpd.apache.org/ 点击Download--->点击Files for Microsoft Windows--->点击A ...
- centos7mongo集群
1.安装 cat > /etc/yum.repos.d/mongodb.repo << EOF[mongodb-org-3.6]name=MongoDB Repositorybase ...
- 静态blog的免费托管部署、加域名与搜索优化(SEO)
本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/hugo_blog_host_and_seo 给博客加个域名准备长 ...
- Java 集合介绍,常用集合类
Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念: (1)Collection.一个独立元素的序列,这些元素都服从一条或多条规则.List必须按照插入的顺序保存元素,而Set不能有重 ...
- mysql PS1个性化
method ) $ export MYSQL_PS1="\u@\h [\d]> " method ) mysql> prompt \u@\h [\d]> met ...
- xposed代码示例
package com.example.xposedhook; import android.util.Log; import de.robv.android.xposed.IXposedHookLo ...
- docker启动elasticsearch失败--jvm内存不足解决方案
centos下载完elasticsearch并修改完配置后运行docker命令: docker run –name es1 -p : -p : -d -v /docker/es/esmaster/es ...
- java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the server
错误信息 java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents ...