- 博客(25)
- 收藏
- 关注
原创 qt事件系统源码-----定时器
几经周转,会进入到QEventDispatcherWin32的event方法中,此处是ZeroTimerEvent事件,会调用QCoreApplication::sendEvent方法,向定时器事件的QObject对象发送一个QTimerEvent事件,从而转入到QObject的event方法中执行;精度要求不高的事件,会调用windows API的setTimer函数,注册一个定时器事件,此事件的回调函数为nullptr,qt会使用windows系统产生的WM_TIMER事件;
2023-08-12 14:06:04 465
原创 qt源码---事件系统之QCoreApplication
wakeUp函数会调用WinAPI的PostMessage函数,投递一个WM_QT_SENDPOSTEDEVENTS事件,其会被processEvent函数捡取到,并最终转入QCoreApplicationPrivate中的sendPostedEvents函数处理(具体可以参考上一节);此处会判断接收的对象是否在主线程中,如果是在主线程中,会检测QCoreApplication的对象是否安装了事件过滤器,如果此事件被QCoreApplication事件过滤器检测到并被处理,并不会向下传递;
2023-08-06 18:28:57 824
原创 qt源码--事件系统之QAbstractEventDispatcher
2、qt通过processEvents函数不断捡取windows系统中的消息、自定义消息,并通过windowsAPI中的TranslateMessage函数翻译消息,DispatchMessage派发消息,将事件转入到qt_internal_proc中;1、qt通过注册一个隐藏的windows窗体类(主要时qt_internal_proc钩子函数),接收windows系统中的消息事件,并调用QCoreApplicationPrivate类中的sendPostedEvent函数,切入到qt的事件循环中;
2023-07-30 17:58:46 691
原创 QObject源码--剩余内容
这样做应该是防止待删除对象执行其析构函数时消耗时间太长,而此时又执行了setParent方法时会引起异常(删除的对象又再次被添加到其他对象的children列表中,可以结合setParent方法理解)。遍历children列表,查找子对象中和T对象有继承关系的对象,且name为空或者和objectName相匹配时,既返回当前对象;判断新的parent对象和当前对象是否为同一线程,如果不在同一个线程在抛出警告信息,并返回(如果不在同一个线程,则QObject对象内存无法自动被回收,需要手动删除);
2023-03-19 17:45:55 368
原创 编写一个静态方法histogram(),接受一个整形数组a[]和一个整数M为参数并返回一个大小为M的数组,其中第i个元素的值为整数i在数组中出现的次数。
编写一个静态方法histogram(),接受一个整形数组a[]和一个整数M为参数并返回一个大小为M的数组,其中第i个元素的值为整数i在数组中出现的次数。如果a[]中的值均在0到M-1之间,返回数组中所有元素之和应该和a.length相等。public static void histogram(int[] a, int m) { int[] buf = new int[m]; for (...
2019-12-17 14:28:43 513
原创 编写一个静态方法lg(),接收一个整型参数N,返回不大于log2(N)的最大整数。
/** * 将lg2(N)转换为2(N)指数函数来计算。 * @param n * @return */ public static int lg(int n) { int k = 0; int tmp = 1; while(tmp <= n) { tmp *= 2...
2019-12-13 15:19:31 243
原创 Linux下使用pyvisa控制GPIB设备
Linux下使用pyvisa控制GPIB设备1、目的 由于在Linux环境下安装NI-488.2驱动花费很长时间,而且出现的问题比较多,所以特此记录下。2、安装步骤2.1下载镜像文件从NI官网上下载NI-488.2和NI-Visa镜像文件。官网地址http://www.ni.com/zh-cn/support/downloads/drivers.html2.2安装镜像文件将镜像...
2019-07-11 16:10:41 3097
原创 linux下MySQL使用中文遇到的问题
1、在向MySQL中插入含有中文的字段时,出现ERROR 1366 (HY000): Incorrect string value: '\xE5\x93\x88\xE5\x93\x88' for column 'answer' at row 1等字段时,使用show create table table_name查看表的编码:(注:上图是修改过的)未修改的出现的是:CHARSET=Lati
2018-01-09 17:58:25 211
原创 Python 2.7(64位)安装mysql数据库
1、下载mysqldb源码,https://pypi.python.org/pypi/MySQL-python/1.2.5解压后执行 python setup.py install 提示错误: fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory2、如果出现上述错误,需要安装M
2017-11-21 21:28:41 549
原创 stm32 can中断通信
1、初始化can时钟 void canRCCInit(){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, EN
2017-09-10 22:42:46 10273
原创 I2C模拟通信
1、查看相关介绍I2C通信的资料,读懂I2C时序图。 2、根据时序图写出相应的函数void iicStart(void){ iicSDAOut(); I2C_SDA_H(); I2C_SCL_H(); delay_us(5); I2C_SDA_L(); delay_us(5); I2C_SCL_L();}void iicStop(v
2017-08-23 08:30:38 499
原创 spi测试自发自收(中断通信方式)
1、初始化spi时钟void spiRccinit(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABL
2017-08-13 08:50:37 17557 8
原创 stm32串口通信
stm32串口通信主要是配置相应的参数: 1、初始化串口引脚:void usartGPIOConfigure(void) {GPIO_InitTypeDef gpio_init;gpio_init.GPIO_Pin = GPIO_Pin_9; // TXgpio_init.GPIO_Speed = GPIO_Speed_50MHz;gpio_init.GPIO_M
2017-08-09 08:08:34 440
原创 Linux下配置nfs服务器
1、首先判断Linux上是否安装nfs服务,通过rpcinfo -p来查看: 如果不存在,则执行下列命令安装nfs sudo apt-get install nfs-common nfs-kernel-server sudo apt-get install portmap 2、启动nfs服务 sudo service rpcbind start 通过ps ax | grep
2017-08-01 15:53:56 551
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人