- 博客(129)
- 资源 (6)
- 问答 (1)
- 收藏
- 关注
原创 C++11中std::condition_variable notify_one()与notify_all()的区别
m_conditionVar.notify_all()被调用后,所有子线程都被唤醒,然后尝试获得锁,其中的一个线程获得锁后继续执行后面的代码,而未获得锁的线程再次进入阻塞状态,等待操作系统在当前获得锁的线程释放锁之后唤醒它们。当获得锁的线程的线程函数执行完毕释放互斥锁后,刚刚的那些处于阻塞的线程会都被唤醒,其中的一个会获得互斥锁,而其余的再次进行阻塞状态。当持有锁的线程释放锁时,操作系统会唤醒这些阻塞的线程,而这些线程会继续尝试获得锁。线程被唤醒后,会尝试获得锁,如果未获得锁,会重新进入阻塞状态。
2024-02-03 14:32:03 918
原创 Qt利用paintEvent绘制双Y轴坐标折线图
/tuple元素前两个是左Y轴最大最小值,中间两个是右Y轴最大最小值,最后两个是x轴最大最小值, 其他三个参数分别是轴的偏移量(每个间隔多少值)//将坐标系移动到界面左下角(30, this->height()_50)处。
2023-06-20 15:12:42 782
原创 Qt中moveToThread、QThread、QRunnable相关函数所在线程
【代码】Qt中moveToThread和QThread相关函数所在线程。
2023-06-02 15:46:06 171
原创 C++写数据库乱码解决方案
如果是从数据库表中查询数据,如果数据库表中的某些字段为中文,查询结果也不能正常显示,出现这种情况的原因是因为数据的编码与工程的编码不一致造成的。//先将ASCII码转换为Unicode编码。//将Unicode编码转换为UTF-8编码。//先将UTF8编码转换为Unicode编码。//将Unicode编码转换为ASCII编码。//将ASCII编码转换为Unicode编码。//将UTF-8编码转换为Unicode编码。//将Unicode编码转换为ASCII编码。//将UTF-8编码转换为ASCII编码。
2023-04-20 09:06:48 673
原创 C++实现观察者模式(订阅,发布)
观察者模式是一个应用非常广的模式之一,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当一个对象发生了变化,关注它的对象就会得到通知;这种交互也称为发布-订阅(publish-subscribe)。目标是通知的发布者,它发出通知时并不需要知道谁是它的观察者。
2023-04-07 15:45:30 657
原创 vtk显示mpr影像(QVTKOpenGLNativeWidget)
该项目是自己在学习VTK时尝试显示dicom,自己对vtk接口理解不是很透彻,目前只能做到显示图像和鼠标滚轮切换层,后期如果有项目锻炼,加深理解后再修改,本文使用的是QVTKOpenGLNativeWidget控件进行显示图像,只列举主要的代码,其他的部分需要自己根据自己的工程情况进行添加界面。下面是vtkInteractorStyleImage子类,主要用于鼠标交互。
2023-03-29 10:08:54 1138
原创 ‘perl‘ 不是内部或外部命令,也不是可运行的程序
解决办法:set path=C:\Strawberry\Perl\bin;安装完成以后还是提示:‘perl’ 不是内部或外部命令,也不是可运行的程序。‘perl’ 不是内部或外部命令,也不是可运行的程序或批处理文件。设置成功以后重启QtCreator,重启打开项目即可。
2023-02-13 10:55:48 5989
原创 Qt工程将依赖项放到exe目录
首先在菜单栏中找到qt安装文件夹,在文件夹中选择工程编译器,点击运行,cd到exe目录。执行一下命令:windeployqt 自己的exe。
2023-01-17 11:08:16 238
原创 vs如何设置在Release下进行调试
使用VS进行项目开发时,在debug环境下调试程序是没有问题,但是当release发布版时,会出现问题,很难排查,除了打log不能使用断点的方式进行调试,很难定位到问题所在,现在将vs环境设置release调试如何设置分享如下:第一步:打开项目属性,在属性中选择连接器 > 调试 > 生成调试信息第二部:属性 > c/c++ > 优化第三步:属性 > c/c++ > 常规选择完成后点击应用就可以在release下进行打断点进行调试
2022-12-05 13:47:09 5739
原创 Qt配置VS后,Qt工程双击ui文件,过几秒会闪退
2)在资源文件在找.qrc资源文件,同步骤1),只是添加的是C:\Users\liming4675\AppData\Local\Microsoft\VisualStudio\15.0_e9c80a12\Extensions\iqhqs4nc.ey2\QrcEditor.exe(需要将此路径的liming4675换成自己的电脑用户名)。Qt工程在vs中直接点解ui界面,自动调用Qt Designer打开界面几秒后Designer界面闪退,回到vs界面,并有“**.ui无法打开文件”的错误提示。
2022-11-18 17:38:17 562 2
原创 Qt中设置QComboBox控件下拉框中的item高度不起作用原因
在Qt项目中很少会用Qt原生的控件风格,有时候需要自己去设置控件的有的属性和风格,但是当设置QComboBox控件时有时候会遇到下拉框中的item不起作用,主要原因是没有设置QListView,具体如下:1.首先给ComboBox设置view:ui->comboBox->setView(new QListView());注意:这一句需要放在在所在界面的构造函数里,否则不生效。2.给comboBox设置样式,可以在creater里设置,也可以调用接口 设置:
2022-11-14 10:19:36 1642
原创 Qt使用QToolButton封装实现开关功能
对于再项目中需要使用类似滑块的开关控件时,Qt本身是没有这样的控件的,只能自己去封装或者绘制,以前用QLabel绘制过,比较麻烦,现在使用QToolButton的check属性,可以判断其是否选中,进行绘制。不需要贴图,项目移植时也不用关心是否拷贝图片
2022-11-09 10:24:39 882 2
原创 自己编写简洁版log日志,
#头文件内容如下打印log日志到文件中的结果自己纯属学习而自己编写的简单的功能,如有错误之处请各位码友指出,我定虚心学习请教,当然日志模块开源的很多,还有很多需要我加强学习和改正
2022-10-27 10:46:12 241
原创 Qt实现放大镜功能
【代码】Qt实现区域放大镜功能。目前主要实现的是整个屏幕鼠标当前位置进行放大,获取当前鼠标位置,将其截取到,进行放大显示处理
2022-09-01 09:21:26 1164
原创 C++单例(懒汉、饿汉)
单例的实现要点单例模式要求类能够有返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法)。## 单例的实现主要是通过以下三个步骤:1.将类的构造方法定义为私有方法。这样其他类的代码就无法通过调用该类的构造方法来实例化该类的对象,只能通过2·该类提供的静态方法来得到该类的唯一实例。3.定义一个私有的类的静态实例。4.提供一个公有的获取实例的静态方法。## **单例追求的目标**线程安全。懒加载。调用效率高。以下是懒汉模式实现:懒汉模式在多线程情况下是线程不安全的,所
2022-05-04 10:31:38 852
原创 C++模板单例
template<typename T>class TemPlateSingleton{private: explicit TemPlateSingleton() =default; ~TemPlateSingleton() = default; //禁止拷贝、移动 explicit TemPlateSingleton(const TemPlateSingleton& tem) = delete; TemPlateSingleton& operator = (co
2022-05-04 10:16:50 800
原创 Qt如何设置控件字体有下划线
QLabel* pLabel = new QLabe();pLabel->setText("<u>有下划线字体</u>")
2022-04-08 13:25:48 1743
QtWidgetsApplication2.rar
2021-03-04
c++继承关系中虚函数表和子类内存如何分布
2023-04-17
Qt编译成插件,再designer中使用时会报以下警告
2021-03-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人