嵌入式积累
文章平均质量分 52
三公子Tjq
三少爷的剑:剑气纵横三万里,一剑光寒十九洲!
展开
-
Qt5.9中设置QTreeView和QTableView的垂直滚动条QScrolBar一直显示用法
设置QTreeView的垂直滚动条QScrollBar一直显示,需要用函数setVerticalScrollBarPolicy(),void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy);其中Qt::ScrollBarPolicy的属性有三种设置,可以设置滚动条一直不显示、一直显示、自动显示,分别为ScrollBarAlwaysOff S...原创 2018-07-11 16:39:56 · 6587 阅读 · 0 评论 -
Qt5.9创建文件夹(Dir::mkpath())和删除文件夹下所有文件(Dir::remove())
本文主要封装一个函数,该函数的功能是在指定路径下,创建一个文件夹。其中,核心函数为:Dir::mkpath(QString)。1.1具体的实现代码如下所示:bool Widget::makeDirPath(QString dirPath){ QString dest=dirPath; QDir dir; if(!dir.exists(dest)) { ...原创 2018-08-02 20:47:00 · 6844 阅读 · 0 评论 -
Qt5.9中设置QLabel控件边框线型(QSS实现:点画线、虚线、实线、3D边框)
本文主要总结用QSS实现控件QLabel边框类型,其它任何一个控件(包括QWidget)同样可以用这种方法设置。用QSS可以设置QLabel控件边框线型,这些类型包括点画线、虚线、实线、3D边框,下面将详细介绍各种线型的实现方式。1.1设置QLabel控件边框为点画线(dotted)QLabel{border:10px dotted #242424;} 1.2设置QLabel...原创 2018-08-30 19:19:27 · 23625 阅读 · 0 评论 -
Qt5.9中设置主窗口QWidget边界图片(背景图片)(子控件不受影响)
本文主要总结在QWidget中设置窗口边界图片,而QWidget上的窗口控件以及子窗口不受影响。1.1主要是用到函数setObjectName()和函数setStyleSheet(),具体的用法如下所示。 QWidget mainWidget = new QWidget; mainWidget->setObjectName("mainWidget"); mai...原创 2018-08-28 10:49:48 · 4669 阅读 · 3 评论 -
Qt5.9中一组按钮QPushbutton形成互斥(有且只能选中一个)(单选按钮)
本文主要总结用一组按钮QPushbutton,实现有且只能选中一个按钮的功能,效果跟单选按钮一样。要实单选按钮,只要用一个类QButtonGround就可以实现。步骤1:调用函数QButtonGround::setExclusive(true)和QPushbutton::setCheckable(true);步骤2:将相关的QPushbutton按钮添加进QButtonGround中,...原创 2018-08-28 14:06:11 · 16165 阅读 · 4 评论 -
Qt5.9自定义按钮实例(上图片下文字,图片文字间距任意可调)
本博客主要总结一个自定义的按钮实例。该实例实现的效果是上面是图片、下面是文字,其中图片位置和文字位置任意可调。该自定义控件的实现思路如下:a1.新建一个类,该类继承QPushbutton,由于QPushbutton继承于QWidget,因此可以直接在该继承类里面进行布局管理和挂载控件;a2.新建两个QLabel实例,即buttonImage和buttonTxt(是QLable实例)。分...原创 2018-08-28 17:12:01 · 6163 阅读 · 0 评论 -
Qt5.9中获取QButtonGroup被选中按钮QPushbutton的ObjectName用法(qobject_cast)
本文主要总结获取QButtonGroup被选中按钮QPushbutton的ObjectName用法。要在按钮组QButtonGroup获取被选中按钮的ObjectName,只需要用到一个函数T qobject_cast ( QObject * object ),其中object的目标是被选中按钮(用函数QButtonGroup::checkedButton()可以实现)。函数qobject_c...原创 2018-08-29 19:01:59 · 10793 阅读 · 0 评论 -
Qt5.9中类QActionGroup用法
本文主要总结类QActionGroup的用法。在Qt5.9中类QActionGroup的用法跟类QButtonGroup用法几乎一模一样,只是在QActionGroup实例时,需要在后面加一个this指针指定父类对象,即QActionGroup *actionGroup = new QActionGroup(this)。其中,类QButtonGroup的用法,可参考博主之前写的几篇博客:h...原创 2018-08-29 20:54:19 · 2561 阅读 · 0 评论 -
Qt5.9用QStackLayout挂载QWidget时,启动程序瞬间闪现一个小框框原因和解决办法
博主在做项目时,用了堆栈布局管理器QStackLayout,在进行QWidget挂载时,发现程序启动瞬间,出现了一个小框框的bug,但是对整个程序没有影响。1.1原因分析博主查阅资料和咨询qt群里大神,终于找到原因,原来是QWidget初始化时,没有自定parent原因造成的。1.2解决办法在初始化QWidget时,指定parent父对象就可以解决了,具体的代码如下所示:(感谢群主...原创 2018-08-30 15:16:27 · 1646 阅读 · 1 评论 -
Qt5.9/C++项目开发架构理论
最近博主单独负责一个比较大的项目,发现以前那种所有UI界面和功能逻辑全部写在一起的用法很混乱,不利于团队开发和产品迭代。于是,博主最终开始接触架构了,开始知道UI界面和业务逻辑需要尽可能的分离。判断一个结构的解耦程度,一个简单的办法是离开了UI界面,业务逻辑是否可以正常调用和运行,如果可以,说明这个架构是比较成功的。同时,对UI界面和业务逻辑功能的每个模块,是否能够被替换,而不影响整个项目的功...原创 2018-09-07 11:14:34 · 11527 阅读 · 4 评论 -
Qt5.9删除非空文件夹用法(QDir::remove(QString))
本文主要总结删除非空文件夹函数的用法,具体如下所述。 核心函数:a1.函数QDir::remove(QString),主要功能是删除一个文件。a2.函数QDir::setFilter(Filters filter),主要功能是过滤文件类型。a3函数foreach(item,itemList),主要功能是遍历itemList每个元素item。 1.1删除非空文件夹函数如下...原创 2018-08-01 20:05:53 · 6099 阅读 · 0 评论 -
Qt5.9获取指定目录下的文件夹下的文件名称(函数:QDir::setFilter())
本文主要总结只获取指定目录下的文件夹的名称,过滤条其它类型文件。核心点是函数QDir::setFilter()的参数设置QDir::Dirs,如下所示:dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); 1.1下面的是总结的函数:QStringList Widget::getDirName(QString pathsDir)...原创 2018-08-01 19:47:29 · 7291 阅读 · 0 评论 -
Qt5.9中用QPushbutton按钮做出QCheckBox效果(函数QPushbutton::setCheckable())(当前状态、鼠标滑过状态、选中后状态)
本文主要总结用QPushbutton类做出QCheckBox的效果,同时用QSS实现按钮默认图标和颜色字体,鼠标滑过状态,选中后状态。1.1下面,将关键代码贴出如下:QPushButton *allSelectBtn = new QPushButton("全选"); allSelectBtn->setCheckable(true); allSelectBtn->...原创 2018-07-05 14:43:01 · 9334 阅读 · 12 评论 -
Qt5.9一个简单的多线程实例(类QThread)(第一种方法)
Qt开启多线程,主要用到类QThread。有两种方法,第一种用一个类继承QThread,然后重新改写虚函数run()。当要开启新线程时,只需要实例该类,然后调用函数start(),就可以开启一条多线程。第二种方法是继承一个QObject类,然后利用moveToThread()函数开启一个线程槽函数,将要花费大量时间计算的代码放入该线程槽函数中。第二种方法可以参考我写的另一篇博客:https://b...原创 2018-07-23 21:20:14 · 76214 阅读 · 17 评论 -
Qt5.9中根据控件ObjectName查找该控件(查找按钮控件对象Object::findChild())(按钮QPushbutton)
1.1已经知道一个QPushbutton的objectName,可以根据该objectName查找到对应的QPushbutton按钮对象。具体实现函数是:findChild(const QString &aName = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const 1....原创 2018-07-05 17:28:45 · 12035 阅读 · 1 评论 -
Qt5.9解析json文件详细用法示例
本文主要总结用Qt自带的类QFile、QJsonDocument、QJsonParseError、QJsonObject、QJsonArray、QJsonValue来解析已经写好的json文件。其中,json文件的创建可以直接新建一个txt文本,然后将其后缀改为*.json文件就行。如果要用Qt程序自动创建,可以参考这篇博客:https://blog.csdn.net/li491093957/ar...原创 2018-07-18 19:32:37 · 33547 阅读 · 8 评论 -
QListWidget的QSS用法
本文完全是转载如下网址博客内容,如有侵权,请及时通知,博主会删除。原文地址:https://blog.csdn.net/u011125673/article/details/51753997QListWidget和QTableWidget的使用和属性,QTableWidget和QListWidget样式表的设置,滚动条的样式设置一、QListWidget的使用//一、QListWidgetli...转载 2018-07-12 19:09:14 · 12780 阅读 · 0 评论 -
Qt5.9自定义标题栏用法
本博客主要总结创建Qt工程时,不用系统自带的标题栏,而是用自定义的标题栏。其中,自定义标题栏主要原理是,屏蔽原来的标题栏,然后用QVBoxLayout垂直布局管理器,加载一个标题栏QWidget。其中,这个标题栏QWidget里面自定义标题栏的功能按钮,比如图标、图标内容、最大化按钮(QWidget::showMaximized())、最小化按钮(QWidget::showMinimized())...原创 2018-07-19 18:39:58 · 10819 阅读 · 0 评论 -
Qt5.9继承QObject创建多线程实例(第二种方法)
本博客主要总结Qt中创建多线程的另一种方法,不是通过继承类QThread,而是通过继承对象QObject,来实现多线程。(可以直接跳过下面内容,看1.1内容)利用继承QObject方法创建多线程,主要的步骤有一下几点:(注意:退出线程循环后,还要调用QThread::quit()函数,该线程才会触发QThread::finished()信号)a1:首先创建一个类MyThread,基类...原创 2018-07-25 14:15:26 · 21755 阅读 · 15 评论 -
Qt5.9中打开一个cmd进程并且进行数据的读写(QProcess)
本博客主要总结利用类QProcess打开一个CMD进程,并且向其中写入命令行和读数据,下面将通过一个具体的实例来演示具体用法。(可以直接跳过注意,看1.1内容) 注意:a1:函数void QProcess::start(const QString &command, OpenMode mode = ReadWrite),表示开启一个线程。下面语句时开启一个cmd进程,具体代码如...原创 2018-07-20 16:11:03 · 1572 阅读 · 0 评论 -
Qt5.9用函数FileDialog::getExistingDirectory()打开一个已经存在的文件夹
本文主要总结用函数FileDialog::getExistingDirectory()打开一个已经存在的文件夹,该功能一般用于选择文件夹按钮上。注意,是选择文件夹,而是不是选择文件,选择文件功能可以参考我之前写的这篇博客:https://blog.csdn.net/naibozhuan3744/article/details/81081922static QString QFileDia...原创 2018-07-27 17:56:29 · 17312 阅读 · 1 评论 -
Qt5.9拷贝文件(复制文件)函数封装和总结(核心函数:QFile::copy())
本文主要总结用Qt5.9封装一个函数,该函数的功能是拷贝源目录下的文件到指定目录下,具体的定义如下所示:void copyFiltTo(QString sourcePath,QString destPath, QStringList fileType);其中,sourcePath表示源目录地址;destPath表示目的目录地址;fileType表示要复制的文件类型,比如*.png。下...原创 2018-07-31 19:38:46 · 8126 阅读 · 4 评论 -
Qt5.9/C++架构实例(一个简单的MCV架构应用实例)
本文主要在Qt5.9/C++桌面应用项目开发中,总结一个常用的程序架构(或框架),整个工程主要分为三大模块,分别为视图层、控制层、模型层。其中,视图层完全负责界面类的编写和展示;控制层完全负责处理逻辑,将UI界面和模型层的功能有机结合起来;模型层主要负责实现业务逻辑功能。实现一个业务逻辑功能时,控制层是主要层;有三个主要的信号,分别是启动信号、完成信号、显示结果界面信号,具体的可以参考博主这篇...原创 2018-09-07 14:06:10 · 9954 阅读 · 10 评论 -
Qt5.9获取Windows所有盘符(函数QFileInfoList QIr::drives())
1.1Qt5.9获取所有盘符用函数QFileInfoList QIr::drives(),代码如下:foreach (QFileInfo my_info, QDir::drives()) { qDebug()<<my_info.absoluteFilePath(); } 1.2结果如下所示: 参考内容:https://...原创 2018-09-07 14:53:08 · 5037 阅读 · 0 评论 -
Qt5.9中用QProcess开启新进程的三种用法
本文主要总结用Qt5.9的类QProcess开启一个新进程。QProcess中,开启一个新进程有三种方式。第一种:启动时,直接在程序后面附带参数;(process.start("cmd /c ping 127.0.0.1");) 第二种:启动时,分别指定函数名和参数列表;(stringList<<"/c"<<"ping 127.0.0.1"<<&qu原创 2018-09-18 16:02:47 · 6060 阅读 · 0 评论 -
树莓派查看ip地址(命令ifconfig)和退出ping
1.1树莓派查看ip地址用如下命令:ifconfig结果如下图所示: 注意:树莓派查看ip地址是用命令ifconfig,而Windows的cmd命令查看ip地址是ipconfig。 1.2树莓派ping通指定ip地址后,会一直循环,如果想要退出ping循环,则摁键盘组合件:Ctrl+Z。 参考内容:http://www.cnblogs.com/ma6...原创 2018-12-11 22:34:47 · 37112 阅读 · 5 评论 -
树莓派设置开机启动vnc教程
本文主要总结设置树莓派开机自动启动vnc教程,具体内容如下所述。1.1输入下面命令进入root模式sudo su 1.2打开文件/etc/init.d/tightvncserver并且编辑,输入下面命令,结果如下图所示:sudo nano /etc/init.d/tightvncserver#!/bin/sh### BEGIN INIT INFO# Provi...原创 2018-12-12 10:49:35 · 21603 阅读 · 6 评论 -
树莓派vnc(tvnviewer)远程控制退出全屏(Ctrl+Alt+Shift+F)
用vnc(tvnviewer)远程树莓派屏幕时,显示全屏,发现退出(关闭)不了全屏。经过查找,发现想要关闭全屏,需要按如下快捷键组合:Ctrl+Alt+Shift+F 参考内容:https://jingyan.baidu.com/article/86112f1396100227379787a3.html(参考:退出快捷键Ctrl+Alt+Shift+F)...原创 2018-12-25 14:28:08 · 7665 阅读 · 1 评论 -
Windows10和树莓派互传文件(filezilla)
本文主要总结Windows10和树莓派互传文件(filezilla),具体的教程如下所述。1.1到FileZilla官网下载客户端(博主下载的是Windows 64位Client)(树莓派才安装服务端),下载后安装FileZilla软件,安装完后打开界面如下图所示:FileZilla下载官网:https://filezilla-project.org/download.php(或者:htt...原创 2018-12-25 17:02:26 · 10160 阅读 · 4 评论 -
树莓派上编译一个简单的c程序
本文主要总结在树莓派上编译一个简单的c程序,具体的教程如下所述。1.1首先在树莓派上新建一个文件名为test1.c的文件,在文件输入下面内容,如下图所示:#include <stdio.h>int main(void){ printf("this is a program test!\n"); return 0;} 1.2输入下面命令,用gcc编译t...原创 2018-12-25 17:44:54 · 18866 阅读 · 3 评论 -
百度云服务器Ubuntu16.0(Linux)安装mqtt的mosquitto代理服务器
本文主要总结在百度云服务器Ubuntu16.0(Linux)上部署mqtt的mosqutto代理服务器,全文分为三大部分,分别是百度云服务器安装Ubuntu16.0系统、在Ubuntu16.0上部署mosquito代理服务器、测试百度云服务器Ubuntu16.0安装的mosquito是否成功,具体的内容如下所述。一、百度云服务器安装Ubuntu16.0系统1.1登陆百度云平台,选中购买的服...原创 2019-01-10 19:46:52 · 862 阅读 · 3 评论 -
Windows和Linux互传文件(filezilla)
本文主要总结在Windows和Linux之间互传文件,前提是两个都能正常上网。1.1想要在Windows和Linux之间互传文件,只需下载开源软件filezilla即可。下载地址:https://www.filezilla.cn/download/client博主下载的是Windows7、Windows8及以上64位绿色版,如下图所示:(只需要在Windows下载或者安装即可实现双向通...原创 2019-01-10 21:35:31 · 3233 阅读 · 1 评论 -
树莓派打开qt的qcreator时出现键盘乱序错误解决办法(原因是vncserver错误)
1.1错误问题博主在用树莓派打开qt的qcreator时出现键盘乱序错误。博主用的树莓派是官方最新版的raspberry系统,qt5.7,qcreator4.2.0。当博主打开qcreator时,发现键盘乱序,但是在其它程序却不会,只有在qt里面才会。经过查找资料,博主发现是vncserver的版本问题。1.2解决办法(原因是vncserver版本过低)安装最新版的vnc,安装教程参考...原创 2019-01-02 16:37:02 · 1154 阅读 · 0 评论 -
基于树莓派Linux的简单Makefile文件编写(手写)
本文用自己编写的简单Makefile文件,使用make命令自动编译所有的文件,使用make clean命令,清空生成的.obj文件,具体步骤如下。1.1首先在/home/pi/TJQ/project文件夹下建立如下四个文件main.cpp、test1.hpp、test1.cpp、makefile,具体的内容如下所示:main.cpp#include "test1.hpp"int m...原创 2019-01-08 22:45:06 · 3068 阅读 · 0 评论 -
树莓派Linux下利用autoconf工具自动生成makefile文件(自动)
本文主要总结在树莓派Linux下利用autoconf工具自动生成makefile文件,接着只需要输入make命令就可以生成可执行程序,然后执行可执行程序(手动编写makefile文件可以参考博主这篇博客:https://blog.csdn.net/naibozhuan3744/article/details/86103552),全文主要分为两大部分,分别是环境安装和示例用法,具体内容如下所述。...原创 2019-01-09 17:00:30 · 1576 阅读 · 0 评论 -
安装树莓派vnc或者xrdp出错解决办法(树莓派ping不同Windows、但是Windows可以ping通树莓派)(树莓派上搭建好了vnc环境和xrdp环境)
1.1出现问题博主按照这篇教程https://blog.csdn.net/naibozhuan3744/article/details/84961041搭建树莓派vnc环境或者xrdp环境时,一直出现win10系统ping不通树莓派,而树莓派却可以ping通win10莫名其妙的问题。也就是说,无论是用tvcviewer还是用putty都连接不上树莓派,如下图所示:(前提:已经确认树莓派上搭建好...原创 2018-12-11 22:05:03 · 5257 阅读 · 4 评论 -
Windows10下远程控制树莓派raspberry系统教程(xrdp+win10自带远程工具)
本文主要总结用xrdp+win10自带远程工具远程控制树莓派桌面,该方法优点是win10不但能控制树莓派桌面,还能互传文件,缺点是控制桌面太卡,具体教程如下所述。注意:这种方法的前提是win10和树莓派都是用有线网络或者无线网络,不能一个有线网络一个无线网络!!! 一、用xrdp+win10自带远程工具控制树莓派远程桌面1.1 xrdp控制树莓派时,还是需要安装vnc,安装vnc的...原创 2018-12-11 21:17:04 · 11430 阅读 · 1 评论 -
利用CMD命令行杀进程方法(已知该进程的PID号,可以直接杀该进程)(QProcess、taskkill)
博主做工程时,利用Qt的主线程开启了一条支线程,然后用该支线程以阻塞的方式开启了一条进程。这条进程执行的时间很久,博主想要在执行到一半的时候,强行终止该进程。经过一天的资料查找,博主终于找打了一个简易可行的杀进程方法,下面详细的方法介绍如下。1.1博主利用Qt的QProcess在支线程里面开启了一条进程,并且获取了该进程的PID号。代码如下:(注意:在Qt下进程的PID是quint64 QPr...原创 2018-09-14 21:17:49 · 5638 阅读 · 0 评论 -
用CMD命令查看Windows系统磁盘信息(diskpart、list disk)
用cmd命令查看Windows10的磁盘,可以用如下命令。(注意用管理员身份打开cmd)1.1在cmd输入如下命令,结果如下图所示。diskpart 1.2继续输入如下命令,查看系统挂载的磁盘list disk 参考内容:https://blog.csdn.net/naibozhuan3744/article/details/82258909...原创 2018-10-12 17:00:30 · 107078 阅读 · 3 评论 -
MFC匿名管道原理详解、函数总结、调用实例(用MFC的匿名管道读取CMD输出内容)(C++语言)
本博客主要总结MFC中匿名管道的原理和具体调用实例,以及调用匿名管道三个核心函数各个参数用法详解,具体的如下所述。博主在做项目时,遇到一个问题。用程序调用一个进程,然后读取进程输出信息。但是,博主用Qt的QProcess无法读取标准输出,所以只能考虑管道技术。由于博主的开发环境是Windows10 64位,Qt的QProcess并没有找到类似的功能(可能博主对Qt研究不够深入,希望知道的大...原创 2018-10-18 20:23:31 · 2884 阅读 · 0 评论