自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 linux脚本遍历删除qt .moc、obj、.pch等编译过程中文件

#!/bin/bashNAMES=(".moc" ".obj" ".pch" ".rcc")for NAME in ${NAMES[@]}do DSTS=`find $1 -name $NAME -type d -print` for DST in $DSTS do /bin/rm -rf $DST donedone

2021-02-25 11:06:58 316

原创 QtCreator欢迎界面示例为空问题

QtCreator内部加载examples是这样子的:1.先找Qt Doc目录(可以使用qmake -query QT_INSTALL_DOCS命令查看相关路径),然后从它的每个子目录下查找'examples-manifest.xml'和'demos-manifest.xml'文件。2.找到了之后,以qt gui 的'Analog Clock Window Example'为例,比如Qt Doc是在/usr/share/qt5/doc下,那么该示例就在/usr/share/qt5/doc/qtgui

2020-12-29 10:05:41 2768 1

原创 继承QPushButton重写MouseEvent后按钮clicked信号不响应

自定义QPushButton按钮后,需要重写一下mouseEvent,结果发现按钮的clicked信号不会触发了:bool MyButton::eventFilter(QObject *watched, QEvent *event){ Q_UNUSED(watched); if(event->type() == QMouseEvent::MouseButtonPress) { timer->start(1000); } else i

2020-09-08 23:12:00 2302 6

原创 Qt子控件控制父控件同步移动

最近有个小需求,需要拖动子控件来控制父控件移动,之前想的有些复杂,最终实现后也很是简单,这里记录一下:void MyButton::mousePressEvent(QMouseEvent *event){ if(event->type() == QMouseEvent::MouseButtonPress) { m_moveStart = true; m_curPoint = mapToGlobal(event->pos()); }

2020-09-05 21:33:01 1026

原创 Qt Style Sheets指定自定义控件样式

qt样式表设置中,直接指定QWidget、QPushButton或者其它的qt界面类都可以设置它本身及其子类相关的样式,如: QLineEdit { background: yellow } QCheckBox { color: red }但是如果继承某个类重新绘制控件后,那么直接这样指定自定义类的话就不能生效(当然如果直接在该类中setStyleSheet是可以设置样式的),这里可以参考Qt Style Sheets Reference文档,里边有介绍customQWidget时需要做哪.

2020-09-03 22:24:10 1547 1

原创 linux下QSettings读写配置文件

今天才注意到QSettings类已经提供了读写配置文件的方式,之前是启动时读取文件、关闭时写入配置,需要手动去打开创建指定位置的配置文件,然后查找修改指定字段的文本内容,也是够麻烦的了。QSettings的使用也是非常简单和方便的,当然我也只是今天简单测了一下,没有把帮助文档里的所有例子都使用一下,不过单纯的读取和写入配置文件已经能满足我日常的工作了,在这里也是记录下:先构造一个QSettings对象,传入两个值:公司名称和程序名称之后就可以通过这个settings对方去读取和写入配置文件.

2020-05-09 10:52:10 1915 1

原创 关于cvLoadImage无法加载图像问题

昨天使用opencv库去测试一些功能时,使用IplImage的cvLoadImage函数加载图像,结果图像一直未加载成功,刚开始以为是路径问题,但结果使用QImage通过该路径是可以获取到图像的,又不是在windows环境下路径还要加"\\",Linux下"\"足矣。因此怀疑是图像格式的问题,从png换为jpg再试就成功加载到了。这个情况很明显就是该opencv库不支持libpng库,无法显示...

2019-12-06 09:44:20 1092

原创 中标麒麟桌面操作系统(兆芯版)V7.0虚拟机安装过程

最近需要用到中标麒麟操作系统环境,而不管是龙芯版还是兆芯版我这边都没有这种芯片的电脑,龙芯版的只能装在龙芯CPU电脑上这个我知道,但兆芯版的也没个说明,只知道它是X86架构的,尝试在虚拟机上安装也成功了,这里记录一下安装步骤。1.目前中标软件官网可以直接下载中标麒麟桌面操作系统软件(兆芯版)V7.02.镜像下载完成后启动VMWare虚拟机,点击新建虚拟机,然后选择自定义(高级)类型...

2019-11-16 10:17:24 16586 4

原创 QPainter的setViewport()视区与setWindow()窗口理解

先看助手说明:1.QPainter的viewport()与window()分别代表着物理坐标与逻辑坐标区域,默认两个区域是重合的,也就是用户指定的rect区域在两者上是同样的大小、位置。2.setWindow()可以设置你想指定的rect区域,比如rect=(-50,-50,100,100),此时你定义的逻辑区域左上坐标(-50,-50),右下坐标(50,50),大小(100X100)...

2019-10-31 17:28:27 4140 2

原创 VMware Ubuntu虚拟机启动鼠标定位不准问题

昨天打开虚拟机第一次遇到鼠标定位不准出现错位的问题,当时以为是VMware Tools某个服务或是什么其它东西没完全启动造成的,之后重启了一下系统就好了;今天打开又出现了这个问题了,不想再重启也不想再重装VMware Tools了,试了“立即适应客户机”、“立即适应窗口”、“自动调整大小”都不行,最后还是全屏了一下再恢复就好了,不过具体的原因未知。...

2019-10-31 09:34:20 2385 2

原创 V4L2+Qt5实现摄像头视频采集以及参数控制(源码学习版)

之前一直想把关于Linux下使用V4L2做视频采集、Qt界面显示实时画面的源码整理一下发出来,不过太懒了我,同时那版bug太多不想花精力去修改了,今天不忙就赶紧整理一下把程序删删减减做一个学习版的demo出来。这个demo源码只是供大家学习一下V4L2,如何在Linux下简单的打开一个摄像头设备并且可以获取视频流中的图像帧并显示出来,不然光看V4L2的结构体以及它的example还是不够直观的。...

2019-09-27 10:47:49 3871 11

原创 关于QComboBox下拉框列表显示错乱问题

QComboBox下拉框列表有个小问题:当用户鼠标点击右侧倒三角箭头打开显示列表时,如果此时某个动作增加了新的项到下拉框列表中去,会导致列表出现显示错乱的问题,例如用户打开下拉框列表时,如果鼠标移动到第二项会触发槽函数自动往列表中新增一项,此时列表就会看起来特别的不舒服,哪怕是重新打开列表也是错乱显示,如下图所示:其实要解决这个问题也很简单的,不需要重写QComboBox,也不需要去限制用...

2019-09-16 17:35:51 1908

原创 交叉编译libharu库

将普通的图片转为PDF格式,用到了libharu库,而在Ubuntu上使用本地编译该库源码还是很方便的,使用cmake-gui工具或者自己去configure都可以,但是移植到龙芯平台上使用,使用cmake-gui指定了交叉编译器出现了点问题暂时无法解决,目前只能手动去configure了。下载最新版本的libharu库:https://github.com/libharu/libharu/r...

2019-09-05 14:21:23 682

原创 C语言函数重名问题

最近当遇到一个奇怪的问题,程序编译运行不报错,但是执行结果却一直不是自己预期的结果,定位时发现问题出现在重名函数处,自定义的C接口与另一方提供的动态库中的一个接口名冲突了,导致程序在链接时一直找的是自己定义的接口,这块好改,改一下接口名即可;但是后来发现不管定义的接口是不是static或者接口参数并不一致,甚至没有任何其它文件引用该接口所在到的文件,仅仅放到项目中编译能通过,运行就有问题,执行...

2019-09-02 17:26:46 1750

原创 QComboBox中添加右键菜单项设置QPen样式

之前项目中有用到鼠标绘制矩形框的Demo,这两天新添加了点小功能,重写QComboBox控件使用事件过滤器筛选出第二项的右键事件,在右键事件中调出QMenu菜单设置QPen的颜色、线型以及线宽,给用户多些选择:以下是MyCustomComboBox的头文件以及源文件:#ifndef MYCUSTOMCOMBOBOX_H#define MYCUSTOMCOMBOBOX_H#inc...

2019-08-19 10:01:43 1171

原创 libGL.so.1: undefined symbol: drmFreeDevice

在中标麒麟系统上配置Qtcreator环境时,发现系统自带Qt5.6.2版本,GCC4.9.3,在Qtcreator中配置好Kit后,编译一下程序时出现以下错误:看到“undefined reference to”时,自然的就想到是共享库的兼容性问题,于是在pro文件中重新指定了LIBS的路径,重新编译发现报libopencv_highgui.so的问题,猜想会不会是gcc的版本与编译op...

2019-07-26 17:28:09 784

原创 cvCopy.cpp error:src.depth() == dst.depth() && src.size() == dst.size()...

错误起因:在调用cvSetImageROI后,使用cvCopy出现错误,导致程序异常终止。原因分析:cvSetImageROI()这个函数不一定执行成功,可能导致src与dst的depth或者size不匹配造成cvCopy报错。解决方法:在调用cvCopy前判断一下src与dst的depth和size,看是否匹配。cvSetImageROI函数原型:void cvSetIm...

2019-06-03 11:35:20 725

原创 Qtcreator与多个交叉编译器问题

之前项目中使用的gcc为4.4.7版本,后来因为C++11的原因升级到了gcc4.8.3,但是在设置了Qtcreator中的构建套件后,重新编译项目发现还是有错误:这个错误感觉不像是项目出问题了,而更像是编译器的问题,去qmake后生成的Makefile文件中看,果然虽然在Kit中指定了gcc4.8.3,但是Makefile中的CC和CXX还是gcc4.4.7:这个问题会出在哪呢?...

2019-05-31 16:27:55 985

原创 V4L2在VIDIOC_DQBUF处阻塞解决方法

之前遇见在VIDIOC_DQBUF处阻塞问题时,只是简单的设置了一下分辨率解决了当前问题就没再继续处理了。今天再看官网的demo时,才发现有个select函数可以来监听ioctl超时问题:fd_set fds;struct timeval tv;int r;FD_ZERO (&fds);FD_SET (fd, &fds);/* Timeout. */tv.tv...

2019-05-20 17:23:50 7578 4

原创 QListWidget改变Item项中图片位置(居中)

QListWidget提供一个基于item的列表控件,当前我是用来显示拍摄图片后的缩略图列表,虽然QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent = Q_NULLPTR, int type = Type)已经提供带Icon与Text的构造函数,但是对于icon的显示位置却没有合适...

2019-05-20 14:15:36 9816 5

原创 V4L2在VIDIOC_DQBUF处阻塞以及视频花屏残影问题

1.问题一:使用默认分辨率(640*480)打开视频出现花屏并阻塞问题:程序在打开副头时出现花屏,同时在ioctl(fd, VIDIOC_DQBUF, &buffer)处阻塞住导致UI界面没有反应,调试时发现副头打开正常,可读取一帧数据后显示出来的却是不正常的图像,之后再次读取一帧数据时便会阻塞住,本来想使用非阻塞模式来open设备,后来想起来非阻塞模式下回出现大量的"Resource...

2019-05-10 13:47:18 2269 1

原创 Qt在鼠标事件中使用move()移动控件时出现抖动问题

今天新写了一个QLabel类,主要是为了将之前关于图像旋转缩放遗留的问题解决一下,结果发现在mouseMoveEvent事件中做move()操作时,画面抖动的很厉害:本来想加断点调试看看,结果鼠标一移动就不停的触发该事件,基本也看不出什么原因;只能打印调试信息看坐标变化,鼠标一直往右走,x值应该一直增大,结果中间穿插着一个减小的值:那这些减小的错误的值是怎么来的呢?原因还是move...

2019-04-30 16:48:46 3890 2

原创 Qt子线程emit信号传递图像数据给主线程——一个BUG

卡了两天的一个BUG终于解决了,在进行后续开发前先记录一下问题所在。1.第一个问题在于QThread中的msleep()方法:本来想用该方法来做延时操作的,之前使用中还没出现过问题,但是在这个项目中延时值是通过计算视频流实时帧数获得的,在测试笔记本电脑摄像头时也没问题,后来换了个外部摄像头(最高分辨率五百万)程序在msleep()处阻塞住,查看实际延时值发现是-1000,也就是msleep...

2019-04-19 17:18:26 4867 1

原创 QtCreator构建套件时出现黄色和红色叹号

在构建套件时手动指定了Kit的Qt版本与GCC版本,结果还是出现红色叹号:原以为是Qt版本与GCC不匹配造成的,后来测试发现两者都正常,按理说不应该是兼容问题,后来把鼠标放到叹号上才找到了原因:问题就在GCC选择的ABI与Qt版本要求的不一致,在GCC设置ABI处选择custom,配置成要求的即可,如:Apply之后再去设置Kit则一切正常。对于黄色叹号的问题,官网说...

2019-04-18 17:43:10 19927 4

原创 make: Warning: File '***/resources.qrc' has modification time 27987 s in the future

移植Qt程序时,在目标电脑上使用QtCreator编译程序出现该错误,原因是某些文件修改日期与系统当前日期不一致,导致编译时需要等待倒计时结束,如果时间短等等还行,但是像我这个需要将近八小时的还是算了吧,既然知道问题所在那就好办多了,查看该文件当前修改日期,stat resources.qrc: 文件:"resources.qrc" 大小:832 块:8 ...

2019-04-18 17:28:54 407

原创 Linux C之getopt_long()函数

该函数遇见位置:V4L2官网中的capture.c文件;1.函数作用:解析命令行参数,支持长选项,如--device=/dev/video0; Ubuntu16.04下getopt_long()函数原型:NAME getopt, getopt_long, getopt_long_only, optarg, optind, opterr, optopt - Parse...

2019-04-16 22:48:36 600

原创 虚拟机启动报“内部错误”

今天挂起Ubuntu系统时,虚拟机出现一直卡住未响应问题,等了很长时间也未响应,于是手动关闭虚拟机,当再次启动虚拟机时,报“内部错误”弹窗,上网查说是与虚拟机相关的几个服务未开启,查看服务:显示的是已启动,手动挨个关闭重启一下,再打开虚拟机还是同样错误;换个方式,去虚拟机安装目录下找vmware.exe可执行程序,使用管理员权限启动,同样错误;服务都开启了,权限也有了,还有什么问题呢?是不...

2019-04-15 11:59:03 309

原创 libpng warning:Application built with 1.6.17 but running with 1.5.12

关于opencv移植报libpng版本不一致的错误,我之前一直以为程序运行时找到的libpng库为目标机上的libpng1.5.12版本,可是后来 在该系统里找了半天没找到该版本的libpng,最后才想明白这个错误是opencv交叉编译时的问题,原来是在cmake时我指定了内置的png,在opencv目录下的3rdparty/libpng/README文件中就能看到该版本信息:找到问题所在...

2019-04-03 16:28:30 1249

原创 QSizePolicy属性介绍

QSizePolicy描述着控件在布局管理器中水平方向和垂直方向大小拉伸的策略,重点是在布局管理器中,由布局管理器来控制控件两个方向的大小是如何变化,而这个策略与sizeHint()属性(控件的建议大小,控件必须是在布局管理器中该属性才有效)息息相关。1.enum QSizePolicy::Policy QSizePolicy::Fixed 0 控...

2019-03-12 22:04:48 3243

原创 QWidget全屏与退出

QWidget类有个void QWidget::showFullScreen()方法可以让QWidget进入全屏模式,不过如果程序之前调用过setFixedSize(),该方式是不起作用的。同时它还有QWidget::showMaximized()和void QWidget::showMinimized()最大最小化方法,调用这几个方法后可以再调用void QWidget::showNormal(...

2019-03-08 17:28:38 3054

原创 Qt之样式表简单使用

Qt的样式表类似于HTML Cascading Style Sheets (CSS) 层叠样式表,语法都差不多,虽然我都没学过吧......不过我也不打算深学,看一下Qt帮助手册的"The Style Sheet Syntax",理解如何使用就好。1.语法Qt样式表的语法由选择器和声明部分组成,前者指定了具体的哪个控件,后者则指定控件被设置为哪种样式。例如:选择器为QPushBut...

2019-03-07 17:34:12 201

原创 QScrollArea滚动条的出现

有时在UI界面直接拖出一个QScrollArea控件时,会发现不管往里边放多大的子控件,滚动条都不会出现,哪怕使用setFixedSize()手动固定死了子控件大小滚动条也不会出现。1.去帮助手册看QScrollArea类的介绍:QScrollArea类被描述为是显示frame内子widget的内容,重点是子widget这个容器,如果子widget超过了frame的大小滚动条才会出现。...

2019-03-06 16:57:26 3966

原创 QString与char*相互转换

在混合编程时,经常遇到QString与char*之间的相互转换,有时候忘记了就去网上查,一查就有很多资料可看。不过今天还是来单看一下这两种类型的区别以及QByteArray类,顺便记录一下如何转换,免得每次忘了都要重新上网查。1.char*转QString去看QString的帮助手册,发现QString存储16位QChar类型数据,QByteArray存储原始数据或8位以'/0'结束符的字...

2019-03-06 14:58:56 46083 3

原创 Qt控件提升为自定义类

今天在提升QLabel控件为自定义控件时,发现弹出的对话框里没有直接出现我的新Label类,后来手动填写自定义类名才添加上去,后边还出现“Not used”,吓我一跳,不过还好能识别。像QtCreator中UI界面中的奇葩问题也还遇到过几个,比如在UI界面拖拽控件调整位置时,有时控件会突然隐藏,不管怎么选都选不中,不过右侧列表中还有控件名称,直接剪切复制也就出来了,Crtl+Z都不行,你说气不气;...

2019-03-04 17:27:43 2440

原创 Qt图像缩放、旋转

今天需要将QLabel显示的图像进行缩放旋转,同时图像显示过大时可以使用鼠标拖动来显示图像遮盖部分,鼠标滚轮也可以放大缩小图像。不过拖动部分还没有完成,以QLabel中心点的缩放旋转正常,鼠标滚轮缩小也没问题,放大就出了点问题,现在先来记录一下思路,后续再慢慢完善。1、旋转部分四个旋转角度:0、90、180、270,左旋90和右旋180是同一角度(右旋90和左旋180也是同一角度),定义一...

2019-03-01 17:31:58 3585 1

原创 C语言error: multiple definition of `***'错误

今天在C与C++混合编程时遇见一个问题,我有一个二次封装的a.c和a.h文件,由于一些原因将该文件拷贝为b.c和b.h文件也放到项目中,编译时报error: multiple definition of `***'错误,问题我知道是出在a.c和b.c文件中函数名重复,而C语言中又不支持重载,编译报重定义很正常。但是使用static声明静态函数,又只能被本文件内部调用,不符合我的预期。最后解决方式是...

2019-02-28 17:19:04 3372

原创 QButtonGroup互斥按钮(QPushButton)

QButtonGroup类提供一个容器来放置按钮部件,如QPushButton、QCheckBox和QRadioButton等三种部件。一般对于有多个按钮并且要求同一时间只有一个按钮被选中的情况下,使用QButtonGroup最方便(如果对标题有要求可以使用QGroupBox类),其中QCheckBox和QRadioButton有小对勾和小圆点,在setExclusive(true)下效果很明显,...

2019-02-28 17:10:05 5251 4

原创 QLabel鼠标固定区域拖动

需要使用QLabel显示副头的画面,目前的需求是QLabel固定大小、固定区域拖动,同时最顶层显示。这里继承自QLabel类新建一个C++类来表示我们这种Label,其中主要是三个鼠标事件的重写在这里记录一下。 1.鼠标按下事件: if(event->button() == Qt::LeftButton && mouseStatus == moveEndS...

2019-02-26 16:41:14 2458 3

原创 QListWiget缩略图操作以及右键菜单

项目中用到缩略图来显示拍摄的图像,并且还需要对缩略图中的图像进行复制、删除、重命名、左旋、右旋等右键菜单操作,这里写个小Demo记录一下。1.QListWidget初始化: ui->listWidget->setViewMode(QListWidget::IconMode); ui->listWidget->setMovement(QListWidg...

2019-02-25 17:38:21 671

原创 V4L2+Qt5实现摄像头视频采集以及参数控制

这一段时间在做摄像头控制方面的工作,需要在Linux下实现对摄像头名称和分辨率的获取,同时对亮度、对比度、曝光值等参数进行控制,同时还需要对获取的帧画面进行处理。目前除了图像处理方面,简单的使用V4l2获取设备属性并可以打开摄像头进行参数控制,以及将读取的原始YUYV2帧数据转换为RGB24格式显示在QLabel上都可以实现,今天先在这里做个总结。1.对于V4l2常用的结构体以及相关的命令符,...

2019-02-15 17:09:05 5108 18

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除