新潮技术研究社
这个作者很懒,什么都没留下…
展开
-
cmake常用设置命令及参数大全
6. target_link_libraries(target_name library_names):将目标与指定的库文件链接。4. add_executable(target_name source_files):添加一个可执行文件。14. set(CMAKE_EXPORT_COMPILE_COMMANDS ON):生成编译命令文件。5. add_library(target_name source_files):添加一个库文件。3. set(variable_name value):设置变量的值。原创 2023-12-12 00:18:39 · 769 阅读 · 0 评论 -
编写FastDDS发布端和订阅端
/ 创建DomainParticipant eprosima::fastdds::dds::DomainParticipant* participant =// 创建DomainParticipant eprosima::fastdds::dds::DomainParticipant* participant =// 定义消息类型支持class HelloWorldType : public eprosima::fastdds::dds::TopicDataType{// 创建Topic。原创 2023-10-11 19:50:25 · 262 阅读 · 0 评论 -
C++基类指针转换为子类指针注意事项
/ 创建派生类对象,并将其赋值给基类指针Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);// 将基类指针转换为派生类指针。因此,在进行dynamic_cast转换后,最好使用条件语句来检查转换的结果,以避免使用空指针进行操作。此外,dynamic_cast只能用于指针或引用类型的转换,不能用于转换对象本身。// 转换成功,可以使用派生类指针进行操作 // ...// 转换失败,基类指针不指向派生类对象 // ...原创 2023-10-10 17:23:12 · 416 阅读 · 0 评论 -
C++类型转换详细说明
然后,我们使用重新解释转换将一个整数转换为指针类型,并输出指针的值。最后,我们使用常量转换将一个常量指针转换为非常量指针,并修改指针指向的值。3. 重新解释转换(reinterpret_cast):用于不同类型之间的位模式转换,例如将一个整数转换为指针类型。4. 常量转换(const_cast):用于去除表达式中的常量属性,例如将一个常量指针转换为非常量指针。1. 静态转换(static_cast):用于基本类型之间的转换,也可以用于类层次结构中的向上转换和向下转换。静态转换在编译时进行类型检查。原创 2023-09-25 10:38:55 · 98 阅读 · 0 评论 -
C++模板元编程入门案例
当`N`不为0时,`Factorial::value`的值等于`N`乘以`Factorial::value`。当`N`为0时,特化的`Factorial`结构体的`value`值被定义为1,作为递归的终止条件。示例中,我们定义了一个模板结构体`Factorial`,它接受一个整数模板参数`N`。在`main`函数中,我们使用`constexpr`关键字定义了一个编译时常量`num`,并打印出`Factorial::value`的值,即5的阶乘。原创 2023-08-15 10:12:58 · 143 阅读 · 0 评论 -
qt lamda表达式及捕获变量列表符号说明及示例
在上面的例子中,Lambda表达式lambda1以值传递的方式捕获了变量x和y,而lambda2以引用传递的方式捕获了变量x和y。其中,捕获列表(capture list)可以用来捕获外部变量,参数列表用于指定函数的参数,返回类型用于指定函数的返回类型,函数体则是具体的实现。3. [&]:以引用传递的方式捕获所有的外部变量,使Lambda表达式内部可以访问外部变量的值,并且可以修改它们。2. [=]:以值传递的方式捕获所有的外部变量,使Lambda表达式内部可以访问外部变量的值,但不能修改它们。原创 2023-08-10 14:20:32 · 500 阅读 · 0 评论 -
Linux下C++ STL获取Mac地址
注意,这个代码假设你的网络接口是eth0。如果你的网络接口不是eth0,你需要相应地更改文件路径。或者直接用QtCreator创建C++项目。原创 2023-07-26 09:58:50 · 852 阅读 · 0 评论 -
C++/Qt中异常处理try-catch语句的使用方式及场景案例
然而,使用省略号来捕获异常是不推荐的,因为它会捕获所有类型的异常,包括标准异常和非标准异常,导致代码的可读性和调试能力降低。最佳实践是将具体的异常类型作为catch块的参数,以便更精确地处理不同类型的异常。如果在这些代码执行过程中发生了异常,程序会立即跳转到最近的catch块,并执行相应的异常处理代码。catch块中的参数是异常对象的引用,可以用来访问异常的信息。总之,try-catch语句适用于任何可能会抛出异常的场景,可以提供对异常情况的处理和恢复机制,保证程序的稳定性和可靠性。// 读取或写入文件。原创 2023-07-04 10:08:49 · 4832 阅读 · 0 评论 -
从Qt源码中学习类设计之QSplash源码分析
Java,Python,Web语言,Go等等,都有它们各自擅长的领域。而Qt擅长客户端领域,主要是桌面,嵌入式设备,移动设备等。很多时候,类的头文件中,掺杂着各种变量和函数,混合一起,确实很难看,也比较难以扩展维护。QSplashScreen是Qt类中的程序启动界面类,继承自QWdiget类,也就是说它是一个控件,不过按照官方给的示例代码,这个类似乎不怎么好用。这里就不按照先抽象类,根类,模块类这些顺序去分析了,那样子比较正规,写起来需要很多时间。Qt在设计类的时候,都是以数据类和实现类分离的模式。原创 2023-03-17 17:14:06 · 1000 阅读 · 0 评论 -
Qt代码如何使用QPointer替换普通指针,让代码更舒服?
然后调用delete去清除前面所分配的指针,delete会调用该类的析构函数,最后再赋予null或者0,这样在重复利用该指针变量的时候可以判空,可以不用担心segment error。当然了,你自己创建的类,不继承QObject当然不行。C++中有智能指针,至于还有诸多指针类型,QSharedPointer(多用在指针数组),我就不讨论了,用得少,其实原理都是一样的。5.使用时,如果是调用QPointer本身的函数,可以直接用点或者指针都行,但是如果是模板类T的函数,需要用指针指向符号->。原创 2022-11-09 18:45:26 · 777 阅读 · 0 评论 -
Qt5.15实现获取剪贴板中的截图及文本
经常需要截图的小伙伴们都知道,Ctrl+shift+X,Ctrl+Alt+A,这几个快捷键就是最常用的浏览器截图快捷键了,只要你打开360浏览器,或者登录了QQ,就可以使用,那么截图之后,双击鼠标左键,图片就会暂存在系统的剪贴板中,系统的剪贴板是一个多种数据类型的容器,就像QVariant一样,啥都能放,作为系统上各个应用程序共享的存储容器,所以整个系统也就只有一个,通过QApplication::clipboard()来获取,通过QClipboard类来管理,当然了,其他语言如python,C#,java原创 2022-07-08 23:59:46 · 738 阅读 · 0 评论 -
解决:Could NOT find KF5 (missing: CoreAddons DBusAddons DocTools XmlGui)
错误描述:环境Ubuntu16.04CMake配置过程中发现ECM,KF5模块找不到,于是给出解决办法是:请指定这些模块的具体路径,之前在Windows下编译过一个CMake项目,同样是ECM找不到,不过当时的ECM_DIR却不好使,在Ubuntu下却偏偏就是这个变量,看来,以后缺这种库,末尾加个DIR试试还是可以的。同样,CMAKE_PREFIX_PATH变量设置更是通用,而只要我们仔细观察cmake运行过程,就会发现如下cmake的执行语句,手动执行的时候就是使用的这个变量:不过......原创 2022-07-06 17:25:41 · 1168 阅读 · 0 评论 -
解决CMakeList find_package找不到Qt5,找不到ECM
在编译一个cmake项目的时候,需要用到ECM,于是使用vcpkg install ecm,结果安装成功,但是cmake依然不识别,find_package报错,找不到ecm位置,很显然,vcpkg安装ecm到packages路径下的时候,这个packages路径并没有被cmake查找到这时候,我们需要在CMakeList文件中添加路径说明,也就是用到set了。如下图所示,Qt5可以直接set,但是ECM,我却找不到ECM的路径怎么设置,Qt5_DIR我们经常看到,但是ECM_DIR却不曾看到过,很明显,试原创 2022-07-05 10:26:58 · 3318 阅读 · 0 评论 -
Qt中复合逻辑运算符加减乘除等于号的重载实现源码总结
运算符的重载实现,说简单也简单,无非就是,以往是int加int,string加string,到后来,就成了struct加stuct,class加class了。从基本类型到复合类型的运算,QPoint定义了两个私有的整型变量xp,yp在重载运算符的时候,把operateor==,operator+=,operator!=,看成是一个函数名即可,只不过调用的时候,不带调用符的那个点。但凡Qt中数值计算的类型,都会重载运算符,我们直接可以在头文件中看到定义,譬如,QSize,QRect,原创 2022-07-03 10:59:12 · 548 阅读 · 0 评论 -
VisualStudio2019编译Curl加openssl
近来需要编译curl给某个应用程序当库,虽然有现成的mingw版的curl下载,但是奈何我其他的一些库也是编译自MSVC模式下的,所以当我们混杂这mingw下编译的库和MSVC下编译的库的时候,意想不到的麻烦接踵而至了。所以我就只能将Curl换成MSVC的编译一下,另外最重要的就是需要带上openssl一起编译才能让curl支持HTTPS协议的传输,不然编译完了以后不支持也是白搭。所幸,编译了一番后,还不算很曲折:现成已编译好的curl整个源码包如下:curl-master.7z: (访问密原创 2022-04-15 14:46:11 · 501 阅读 · 0 评论 -
QtCreator4.15下C++访问MySQL8数据库实现案例分析
Connector/C++8.0为访问MySQL Server 8的文档存储实现了新的API:对于用C++11编写的应用程序,使用X DevAPI;对于用普通C编写的应用程序,使用X DevAPI。同样的API也可以用于执行传统的SQL查询。连接器/C++ 8还实现了基于JDCB4的传统C++ API,它与连接器的版本1.1向后兼容。...原创 2022-03-29 16:59:08 · 1510 阅读 · 0 评论 -
Qt5交叉编译时同步arm板子的文件系统
在交叉编译的时候,我们需要用到sysroot参数,而要指定这个参数的值,就需要使用arm板子上的文件系统,这里我们可以有一个很不错的命令,可以很快的同步板子上的所有文件,即整个文件系统到开发环境上哦。首先我创建了一个armubuntu的目录,然后板子需要联网,再就是执行以下命令就可以了。sudo rsync -avx root@192.168.2.88:/ armubuntu/...原创 2020-10-23 18:29:54 · 406 阅读 · 1 评论 -
Qt5.10实现图片转文字功能添加截图功能代码分析
继续更新之前的图片转文字功能,并添加截图功能代码。这里我仅仅只是先截取全屏图片,点击截图功能就可以将屏幕截图。后续功能待完善。我们来分析一下,这个是怎么实现的。源码下载地址:ocr201912161811.zip:已经运行测试通过的了,有问题请留言即可。1.为了与之前的代码合并,我就直接将截图功能模块稍加修改,添加到了图片转文字的窗口上了。void OcrMainWindow::on_...原创 2019-12-16 18:22:30 · 1133 阅读 · 0 评论 -
使用JSON库的时候出现错误error: undefined reference to `Json::Value::operator=(Json::Value&&)'
最近在Qt的项目中使用JSON库的时候,出现了挺多错误的,一个是链接库的错误,环境是UNBUNTU16.4,本以为系统中已经安装了jsoncpp的库了,结果却无法链接。正确做法是,添加链接即可:LIBS += -L/usr/local/lib /usr/local/lib/libjsoncpp.a这里使用的json库时jsoncpp库,下载地址:jsoncpp-master.zip:...原创 2019-11-15 15:40:19 · 12960 阅读 · 2 评论 -
关于解决cmake交叉编译grpc问题:Failed to determine the source files for the regular expression backend
cmake交叉编译GRPC,出现以下正则表达式未能检测的问题,导致grpc的cross compile失败。-- Performing Test HAVE_CXX_FLAG_WSTRICT_ALIASING-- Performing Test HAVE_CXX_FLAG_WSTRICT_ALIASING - Success-- Performing Test HAVE_CXX_FLAG_WD...原创 2019-07-15 15:32:54 · 3403 阅读 · 0 评论 -
《Head First 系列图书》大集合,附案例分析,免积分下载
《Head First 系列图书》大集合,计划是结合现有的项目做一个教程的,这里先开个头。Head First 系列书籍是由 O’Relly 出版社发行的一系列教育书籍,中文一般翻译为“深入浅出”,它强调以特殊的方式排版,由大量的图片和有趣的内容组合构成,而达到非疲劳的沉浸式学习效果。以后持续更新到这里来吧,给自己保留一份。Head First深入浅出Ajax 中文版 (1).pdf:...转载 2019-07-16 18:33:24 · 4104 阅读 · 1 评论 -
Arm下Grpc交叉编译过程记录
首先获取git源码:git clone https://github.com/grpc/grpc.gitcd grpcgit submodule update --init安装zlib。export CC=arm-linux-gnueabihf-gccexport AR=arm-linux-gnueabihf-ar./configuremake -j4make install ...原创 2019-07-31 10:19:44 · 3134 阅读 · 2 评论 -
Qt编程之在main文件中定义多个类记得写上main.moc
很多时候我们写代码都是一个头文件,一个cpp的实现文件。但是很多人为了图方便或者其他习惯问题,或者觉得一个类太短,于是就写到一个main文件中。在Qt程序编译的时候,如果你这么干,一般来说,是会出错的。尤其是你的类实现中由信号和槽,就更加会出现什么virtual table之类的莫名其妙的错误了。那么怎么办?如下例子:在main.cpp文件中,我们定义了好几个类:完整代码如下:co...原创 2019-08-20 23:27:25 · 3181 阅读 · 0 评论 -
Qt版XmlRpc框架源码解析
由于最新版的grpc在交叉编译中的种种错误,导致目前只能放弃grpc的arm版编译,转而投向xmlrpc的怀抱。经过几番查找。我们锁定了这个Qt版本的XMLRPC框架,目前已经使用上了,基于Qt的源码也都是跨平台的,所以感觉恨不错,给大家推荐推荐。源码下载地址如下:libmaia.zip:接下来我们分析一下怎么使用:下载好代码之后,我们可以看到libmaia的库文件源码和examples目...原创 2020-03-27 00:47:59 · 879 阅读 · 1 评论 -
qt 编译fatal error: GL/gl.h错误的解决办法
这是由于系统中没有安装OpenGL库导致的,于是在控制台中输入以下命令安装OpenGL库及其工具:apt-get install libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev使用了上面的安装之后如果还出现找不到的问题,就重启一下机子试试。...原创 2019-02-15 15:44:17 · 3749 阅读 · 0 评论 -
Qt网络命令行参数处理类QCommandLineParser案例,更方便更快捷的办法
在Qt的网络处理中,有一个例子,dnslookup例子,在介绍使用dnslookup的同时,也提供了我们一种更加快捷方便的处理命令行参数的办法。如下,是最常用的使用方法,底下则是更为方便的方法。完整例子如下:dnslookup.zip:CommandLineParseResult parseCommandLine(QCommandLineParser &parser, DnsQuer...原创 2019-07-09 14:28:30 · 778 阅读 · 0 评论 -
关于Qt中使用GRPC库时出现libprotobuf FATAL google/protobuf/stubs/common问题的解决办法,附qt的grpc分布式程序案例免积分
承接之前grpc的编译成功之后,接下来就是使用grpc库了,很简单,我们先将grpc的hello world例子跑成功,这样就可以正式引入使用了。但是事情总是不会那么简单就成功的,解决了很多闹心的问题之后,我在QtCreator中尝试运行hello world,代码大家自己改一改我实在自己的项目中用,所有就将hello world中的main给干掉了,然后加入到我自己的项目中去,很简单,能跑通...原创 2019-06-21 17:31:24 · 3635 阅读 · 5 评论 -
Qt网络下载上传中如何实现进度条效果,附案例免积分下载
1.连接socket的byteswritten信号和自己的处理函数,我们是根据字节数来对progressbar进行设置的。connect(&tcpClient, SIGNAL(bytesWritten(qint64)), this, SLOT(updateClientProgress(qint64)));2.接着我们设置好自己界面上的进度条某bar,然后就是关...原创 2019-06-10 17:13:50 · 905 阅读 · 0 评论 -
Qt运行过程中错误未找到信号的符号undefined symbol: _ZN11FileManager12sigTechFilesE4QMapIi7QSt
Qt程序运行过程中,突然出现了找不到该信号的符号,定义了某sigTechFiles信号,然后在主窗口类中调用,结果编译过程没有问题,却出现了找不到符号的错误。使用ldd,nm命令查看,动态库so里面存在该信号的符号,但是却找不到,后来将整个编译过程文件夹都删了,重新再编译一下,就好了。...原创 2019-03-26 13:43:33 · 2200 阅读 · 0 评论 -
QtCreator中右键添加函数定义或声明的快捷键
我们经常在QtCreator中添加函数定义或是声明,这里叫做refactoring,右键菜单有的,但是直接右键菜单点出来很不方便,有没有快捷键呢?必须有的。我们搜索quickfix,在选项,环境设置中的键盘,就可以看到了,当然你也可以改为别的快捷键,方便就行,我一般改为alt + Enter,默认是alt + Return,距离右手有点儿远,改了吧。...原创 2019-03-21 14:59:40 · 10900 阅读 · 1 评论 -
关于嵌入式系统下输入法的实现的相关问题记录
出现string "The name com.robot.command was not provided by any .service files"的错误提示?说明在dbus中没有改service文件,我们可以到dbus的service目录下找一下别的dbus服务的文件,照着该就行了。...原创 2019-03-21 14:55:28 · 385 阅读 · 0 评论 -
Qt5嵌入式桌面输入法实现最新指南与DBUS调试工具
根据网上输入法改的,很多人没有下载,特放出来原版加改版,后续还会改进别的,有用dbus的,也有不用的。看大家各自的需要吧。注意事项还是很多的。譬如插件名,后缀需要为plugin.so,注意放置的位置在Qt安装目录下的plugin/platforminputcontexts,还有就是闪动问题,可以查看网友的相关评论哦。不懂的留言吧,有空来看看!googlepinyin.7z:Qt5KeyBoar...原创 2019-02-27 09:27:08 · 528 阅读 · 0 评论 -
Qt如何获取按钮点击时按钮上的文字?
使用Qt的信号机制就可以获取发送点击事件的按钮上的文字了。下面这个语句很常用:QString text = ((QPushButton*)sender())->text();原创 2019-03-01 16:01:14 · 12049 阅读 · 1 评论 -
Qt跨平台编译project文件便捷写法
新建一个pri文件,例如example.pri!ROBOTEXE{ ROBOTEXE = $$PWD/../../}#message($$ROBOTEXE)unix:{# contains(QT_ARCH,"arm"):{ #配置嵌入式编译用 if( contains(DEFINES,"ARM")){ # 此处大括号必须与else在同一行# mes...原创 2019-01-29 13:55:13 · 608 阅读 · 0 评论 -
Qt输入法Vkim修改版
int main(int argc, char *argv[]){qputenv(“QT_IM_MODULE”, QByteArray(“vkim”)); //添加这句,直接在QtCreator中启动,不需要在终端运行QApplication a(argc, argv);MainWindow w;w.showFullScreen();return a.exec();}这份源码...原创 2019-01-29 12:34:15 · 772 阅读 · 0 评论 -
Qt QScollBar的通用设置样式模板,感觉挺不错的,建议收藏哦
直接复制到你的qss文件之中用就可以的了。 /*// 设置垂直滚动条基本样式*/QScrollBar:vertical{ width:30px; background:rgba(0,0,0,0%); margin:0px,0px,0px,0px; padding-top:30px; /*// 留出9px给上面和下面的箭头*/ padding-...原创 2019-01-23 15:25:52 · 1138 阅读 · 0 评论 -
如何使用属性编辑编写qss样式?
首先可以在ui设计器中给控件加一个属性,当然了,你也可以在代码中setProperty();样式表中添加代码:(Qt5在样式表文件的识别中对CSS比较好,qss反而不好了,所以大家可以尝试直接使用CSS文件名,例如xxx.css,这样可以直接使用高亮和注释快捷键)QPushButton[mainbtnColor="yellow"]{ color:rgb(255, 255, 2...原创 2019-01-29 10:50:45 · 431 阅读 · 0 评论 -
Qt QCheckBox复选框文字水平垂直居中对齐的解决方法
QCheckBox的文字居中在ui设计器的属性面板中是没有的,所以只能在stylesheet属性中直接设置样式:QCheckBox#checkBox{\n padding-left:25px;\n}记得修改checkBox为你自己的控件名称,居中效果自己调调哦!更多细节,自己看书哦:《Qt5开发及实例》.(陆文周).[PDF].pdf: ...原创 2019-01-25 15:00:13 · 5792 阅读 · 1 评论 -
chrome浏览器及chromium操作系统最新完整源码下载的问题及下载地址
本来很简单的一句下载chrome源码,竟然花了我好久才下载下来。git clone https://github.com/chromium/chromium.git但是用上面的普通做法,我始终无法下载下来。几经周转,看到国外网站上说还要加个参数,git clone https://github.com/chromium/chromium.git --depth 1于是就用了上面那句,下载...原创 2019-03-26 13:48:59 · 1894 阅读 · 4 评论 -
Qt QRadioButton样式设置
转自:https://bbs.csdn.net/topics/390285848/RadioButton样式设置/QRadioButton::indicator {width: 17px;height: 17px;}/单选框未选中样式/QRadioButton::indicator::unchecked {image: url(:/ico/radiobutton-unchecked...转载 2019-03-26 15:07:46 · 12631 阅读 · 0 评论