-
2020-10-21 11:34:57
头文件.h引入:
#include <typeinfo>
int i = 1; QString j = typeid(i).name(); qDebug() << j;
输出 “int”
更多相关内容 -
Qt C++属性类型提供给 QML调用
2018-05-27 17:49:01由于QML引擎与Qt元对象系统的紧密集成,任何由QObject派生出来的类其公有的接口或属性都可以从QML代码中轻松访问,并且改动的地方很少,就可以让C++代码定义的功能轻松扩展QML -
Qt C++版深度学习图像标注工具发布包,支持目标定位、图像分割,四点、多点标注
2019-03-17 21:30:32深度学习图像标注工具支持目标定位、图像分割,四点、多点标注,本文件是直接可运行的文件,不需要安装,支持XML、Json格式 -
QT C++ http get、post 同步异步请求
2018-08-08 10:22:48使用qt写的请求http服务类,实现了get同步请求、get异步请求、post同步请求、post异步请求。4个方法,方便实用。 -
QT c++ dijkstra最短路径工程源码
2017-07-31 20:24:38QT c++ dijkstra最短路径工程源码 -
Qt C++11 生产者消费者模式类
2017-07-11 21:56:15使用Qt 和 C++11 的std::mutex 和 std::condition_variable 实现一个演示生产者消费者模式的Qt工程。 -
Qt C++时间序列分析代码.rar
2020-08-04 11:03:06C++ qt时间序列分析代码,该代码是用于vs,作为时间序列分析的,直接可用,需要输入的是已知数据及预测数据等等 -
qt c++ 学生信息管理系统
2017-09-15 08:39:36qt c++ 学生信息管理系统 -
Qt C++ 程序画Bezier和B Spline曲线
2017-10-16 04:42:28本程序实现用c++画Bezier和B样条曲线,用Qt实现人性化操作界面,内附英文ReadMe文件,请使用前认真阅读。 -
Qt C++录屏代码 录制视频.rar
2020-08-04 11:08:38Qt C++录屏代码 录制视频.bz2,QT+C++写的一个window录屏源码,无bug,如果有问题可直接私聊,学习资料请访问CSDN下载频道. -
Qt6 QML Book/Qt C++/C++中的模型示例源码
2022-02-03 17:40:30Qt6 QML Book/Qt C++/C++中的模型 示例源码 CSDN审核可能较慢,如无法下载,可以过段时间再回来看下 仅供相关爱好者交流使用,请于下载24小时内删除 -
qt c++ 高并发服务器 源码
2018-02-07 09:27:05qt c++ 高并发服务器 源码 编译通过 -
QT C++检测计算机软硬件信息
2018-05-09 10:46:04使用QT C++ 检测系统的计算机名称、cpu、显卡、内存、操作系统、几个屏幕以及每个屏幕的分辨率、硬盘信息、IP、MAC地址、公网IP、以及是否能够联网等信息 详情与效果图见博客:... -
C++_Qt面试题整理.txt
2020-05-19 15:39:22整理了一些Qt和基于Qt的C++常见面试题,适用于初中级程序员面试自检使用,祝各位学习愉快,面试顺利,生活开心! -
Qt C++和Java相互调用
2021-02-09 16:06:58Qt C++和Java相互调用 1. C++调用Java Test.h class Test: public QObject { public: void callJavaMethodPrintHello(); } Test.cpp void Center::callJavaMethodPrintHello() { //这里相当于获取MainActibity....Qt C++和Java相互调用
1. C++调用Java
Test.h
class Test: public QObject { public: void callJavaMethodPrintHello(); }
Test.cpp
void Center::callJavaMethodPrintHello() { //这里相当于获取MainActibity.java里的类对象 const QAndroidJniObject& activity = QtAndroid::androidActivity(); //调用打印 activity.callObjectMethod("printHello", "()V"); //获取值 QAndroidJniObject string = QAndroidJniObject::callStaticObjectMethod("net/sun/java/MainActivity", "getHello", "()Ljava/lang/String;"); qDebug()<<"callJavaMethodPrintHello......:"<<string.toString(); //传参 jint n = activity.callMethod<jint >("add", "(II)I", 1, 2); qDebug()<<n; }
1.const QAndroidJniObject& activity = QtAndroid::androidActivity();相当于获取java里MainActivity的类对象,拿到这个对象开始做其他操作。
2.callObjectMethod、callMethod、callStaticObjectMethod都是调用java代码的方法,具体使用可以参照QT帮助文档QAndroidJniObject类
3.net/sun/java/MainActivity为MainActivity.java的所在路径
4.调用java代码方面新手可能不太会传参和接受返回数据,下边的图标符号对应的类型供参考
MainActibity.java
public class MainActivity extends org.qtproject.qt5.android.bindings.QtActivity { private void printHello { Log.i("@@@", "Hello world!"); } private static String getHello() { return "Hello!"; } private int add(int a, int b) { return a + b; } }
这里没什么好说的,直接写java代码就行,注意C++的参数符号对应的java参数相匹配即可
2. java调用C++
Test.cpp
static void JavaNotify_1() { qDebug()<<"C++ JavaNotify_1"; } static void JavaNotify_2() { qDebug()<<"C++ JavaNotify_2"; } static const JNINativeMethod gMethods[] = { { "CallJavaNotify_1", "()V", (void*)JavaNotify_1}, { "CallJavaNotify_2", "()V", (void*)JavaNotify_2} }; void RegJni() { QtAndroid::runOnAndroidThreadSync([=](){ QAndroidJniEnvironment Environment; const char* mClassName ="net/sun/java/MainActivity"; jclass j_class; j_class = Environment->FindClass(mClassName); if (j_class == nullptr) { qDebug()<<"erro clazz"; return ; } jint mj = Environment->RegisterNatives(j_class, gMethods, sizeof(gMethods) / sizeof(gMethods[0])); if (mj != JNI_OK) { qDebug()<<"register native method failed!"; return; }else{ qDebug()<<"RegisterNatives success!"; } }); qDebug()<<"++++++++++++++++++++++++"; } Center::Center(QObject *parent) : QObject(parent) { }
gMethods是一个二维数组,把需要被调用的C++方法和Java方法绑定到一起,建立对应关系,比如,java中调用CallJavaNotify_1相应C++的JavaNotify_1就会被执行。然后Environment->RegisterNatives注册
MainActibity.java
public class MainActivity extends org.qtproject.qt5.android.bindings.QtActivity { public native void CallJavaNotify_1(); public native void CallJavaNotify_2(); private void callQtFunction(){ CallJavaNotify_1(); } }
java中在你想要调用的地方调用即可。
-
qt c++实现网络广播客户端服务端源码
2016-03-29 11:58:41qt C++实现网络广播客户端服务端源码 -
C++QT5跨平台界面编程原理和实战大全
2021-06-09 12:04:23课程讲解基于QT5.9 SDK,包含QT界面编程的核心内容,并提供全部源码,课程讲解方式是接口讲解、分析、演示示例,课程讲解QTCreator在不同平台的配置方法,linux,windows,mac,课程演示主要以vs2015+QT5.9为主,... -
QT(c++)下载网络图片至本地。
2020-10-23 18:05:43QT进行Android开发时无法用axweight控件,不能进行COM的操作。所以就将网络图片下载至本地。 -
【QT C++ TCP通信调试助手】
2021-12-13 12:54:22基于Qt5的 c++ Tcp/Ip通信 写在前面的话: 本文是在Qt 5.12.2平台上用c++写的tcp客户端与服务端的局域网通信,使用Qt自带的组件设计的界面,通过信号与槽机制实现ui界面中如Button的相应。 一、Qt中的工程的配置: 1...基于Qt5的 c++ Tcp/Ip通信
写在前面的话:
本文是在Qt 5.12.2
平台上用c++
写的tcp
客户端与服务端的局域网通信,使用Qt
自带的组件设计的界面,通过信号与槽
机制实现ui界面中如QPushButton
等组件的功能。另附C#链接:C#版tcp/ip通信一、Qt中的项目的配置过程:
1.工程创建:打开Qt->新建项目->Application->Qt Widgets Application
2.在工程的
.pro
中添加Qt的网络模块如下代码:QT += network
3.ui界面中的控件布局如下:
4.最终的运行效果:
5.项目文件的结构:
注:其中Headers
中的是.h
文件;Sources
中的是.cpp
文件;Forms
中的是ui
界面;Resources
中的是项目的资源文件
。二、TCP server:
1.tcp服务端负责监听ip,与指定的客户端建立连接并通信.
2.在
.h
中声明的函数有:public: void Get_ip(); bool send_msg(QString msg); bool send_msgs(QString msg); private slots: //tcp server void on_connect_pushButton_clicked(); void server_new_connection(); void ReadError(QAbstractSocket::SocketError); void socket_Read_Data(); void socket_disconnect(); void timeUpdate(); void on_clear_pushButton_clicked(); void on_send_pushButton_clicked();
三、TCP client:
1.负责连接服务端,并与其通信。
2. 在
.h
中声明的函数有:private slots: void ReadData(); void C_ReadError(QAbstractSocket::SocketError); void on_connect_server_pushButton_clicked(); void on_clear_pushButton_2_clicked(); void on_send_pushButton_2_clicked();
好了今天就写到到这了,最后附上源码的链接如下:
具体的实现过程源码及编译好的应用程序:项目源码
写在最后的话:
这个也是写了好几个版本,最开始时将Server端和Client端分开写的,有两个项目;后来又想着能不能将server和client放在一个项目中。又改了一个版本,在一个项目中封装两个类,server类和client类,通过button来切换服务端和客户端的界面。写完后又想了一下还是感觉不满意,于是又改了一个版本,server和client在一个类里边用Qt自带的组件QTabWidget实现server和client的界面切换,感觉这个版本符合app的使用习惯,最后就使用这个版本了。
嗯 …… 今天就这些了吧,最后再说一句:
有趣的灵魂千里挑一!!!!
”
-
Qt C++发送图片到QML显示
2019-02-25 19:18:28开发Qt应用时,想把QImage发送到QML端通过Image组件显示出来,这种场景主要用在例如在C++端调用android系统接口截图然后发送到QML端显示,或者C++端QWidget截图然后让QML界面中显示。要想实现该功能,需要用到一个... -
基于QT C++的视频编辑软件源码.zip
2021-03-13 18:43:13基于QT C++的视频编辑软件源码,可供学习C++和QT参考 -
Qt c++ java android 相互调用
2019-01-07 18:30:24Qt c++ java android 相互调用 QtActivity 代码 public static native int sendVideoData(long unused, byte[] data, int len, long timestamp); public static native int sendCh340xData(byte[] data, int ...Qt c++ java android 相互调用
在这纠正 foruok 这个SB 的教程
java调用QT-----------------------------------------------------------------------------------------------------------------------------
** Java QtActivity 代码**
public static native int sendVideoData(long unused, byte[] data, int len, long timestamp); public static native int sendCh340xData(byte[] data, int len);
c++ 导出函数
qt 会生成 so 文件 直接导出 只要导出函数签名一致 java 就能 调用 不需要调用 System.loadLibrary("")
#if defined(Q_OS_ANDROID) #include <jni.h> #ifdef __cplusplus extern "C" { #endif JNIEXPORT jint JNICALL Java_org_qtproject_qt5_android_bindings_QtActivity_sendCh340xData( JNIEnv *env, jclass type, jbyteArray data_, jint len) { jbyte *data = env->GetByteArrayElements(data_, NULL); QByteArray buff; buff.resize(len); memcpy(buff.data(), (uint8_t *)data, len); QMetaObject::invokeMethod(g_cH34xWidget, "onData", Qt::QueuedConnection, Q_ARG(QByteArray, buff)); env->ReleaseByteArrayElements(data_, data, 0); return 0; } #ifdef __cplusplus } #endif #if defined(Q_OS_ANDROID) #include <jni.h> #ifdef __cplusplus extern "C" { #endif JNIEXPORT jint JNICALL Java_org_qtproject_qt5_android_bindings_QtActivity_sendVideoData( JNIEnv *env, jclass type, jlong cptr, jbyteArray data_, jint len, jlong timestamp) { jbyte *data = env->GetByteArrayElements(data_, NULL); uint8_t *buf = (uint8_t *)data; TcpClient::instance()->sendVideo((uint8_t *)buf, len); env->ReleaseByteArrayElements(data_, data, 0); return 0; } #ifdef __cplusplus } #endif #endif
qt调用java-----------------------------------------------------------------------------------------------------------------------------
java代码
public void SetAvcEncoderOptions(int width, int height, int bitrate, int fps) { Log.d("JAVA: SetAvcEncoderOptions", String.format("(%dx%d, %dkbps, %dfps)", width, height, bitrate / 1000, fps)); } public void AvcEncodeData(byte[] data, int width, int height) { Log.d("JAVA: AvcEncodeData()", String.format("buffer == %d", data.length)); }
c++
#if defined(Q_OS_ANDROID) QtAndroid::androidActivity().callMethod<void>("SetAvcEncoderOptions", "(IIII)V", 640, 480, 600000, 16); #endif #if defined(Q_OS_ANDROID) #include <QtAndroid> JavaVM *g_javaVM = NULL; // 保存虚拟机 JNIEXPORT jint JNI_OnLoad(JavaVM *vm,void * reserved) { //qDebug() << Q_FUNC_INFO; //av_jni_set_java_vm(vm, reserved); g_javaVM = vm; return JNI_VERSION_1_6; } #endif #if defined(Q_OS_ANDROID) JNIEnv* env = NULL; if(g_javaVM->AttachCurrentThread(&env,NULL) < 0) { qDebug("Fail to AttachCurrentThread"); return; } QElapsedTimer t; t.restart(); const int mapped = width*height*3/2; const int width = 1920; const int height = 1080; jbyteArray pixmap = env->NewByteArray(mapped); env->SetByteArrayRegion(pixmap, 0, mapped, (const jbyte *) 传递数组指针 ); QtAndroid::androidActivity().callMethod<void>("AvcEncodeData", "([BII)V", pixmap, width, height); //调用 java 函数 传递数组 g_javaVM->DetachCurrentThread(); qDebug() << "Send buffer to java elapsed:" << t.elapsed(); #endif
-
#资源达人分享计划# C/C++大作业 Qt C++图形计算器.rar
2021-08-15 01:45:27#资源达人分享计划# C/C++大作业 Qt C++图形计算器 代码自己写的,功能都正常 使用Qt C++ -
QT C++海康相机SDK二次开发.rar
2019-06-18 12:39:56QT /C++/SDK/海康工业相机/采集图像 -
QT C++ 音乐播放器 炫酷界面 附带所有自制资源图片
2017-08-31 21:40:15QT C++ 音乐播放器 炫酷界面 附带所有自制资源图片,开发环境QT Creator,Qt4 添加歌曲、音量调节、下一首、上一首、列表选择、自动加载已添加列表、自动删除无效歌曲列表。帮助等。 -
C++ Qt设计模式(第2版)
2019-01-15 09:13:37C++ Qt设计模式(第2版)是美国萨福克大学已使用十余年的经典教程,利用跨平台开源软件开发框架Qt阐释了C++和设计模式中的主要思想。全书共分四个部分:第一部分介绍C++、UML、Qt、模型-视图、SQL、XML、设计模式等... -
qt c++各种实例
2016-02-04 16:31:18qt c++各种实例,无论是对于初学者还是有经验的都非常具有参考价值。 -
简易串口调试软件的开发(Qt C++)
2020-01-03 20:42:52本资源通过Qt C++编写了一个简易的串口调试软件,简易实现串口数据的发送,并介绍了用Qt所开发应用程序的发布和打包方式。 -
qt C++调用js方法
2019-02-13 16:46:53qt中C++调用js方法 QWebEnginePage * page = view->page(); if (page) { page->runJavaScript("LastSlide()", QWebEngineScript::MainWorld, [](const QVariant &var) ... -
在Qt平台C++和Java代码的交互
2017-04-17 10:22:18在Qt平台C++和Java代码的交互。更多Qt文章,请看http://blog.csdn.net/u014597198/article/category/5692117