![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
QT学习
文章平均质量分 63
心若向阳,何谓悲伤
这个作者很懒,什么都没留下…
展开
-
QT学习:Qt 5.11.1+OpenCV (含Contrib)-3.4.3环境搭建
一、安装CMakeCMake是用于编译的基本工具,其下载地址为:https://cmake.org/download/,下载获得的安装包 文件名为cmake-3.12.3-win64-x64.msi,双击启动安装向导,如图所示:单击“Next”按钮,在如下图所示的左边页面中勾选“I accept the terms in the License Agreement”复 选框接受许可协议,在右边页面中选中“Add CMake to the system PATH for all users”单选按钮添加原创 2021-07-05 16:58:51 · 621 阅读 · 0 评论 -
QT学习:多国语言国际化
一、国际化支持的实现(1)使用QString对象表示所有用户可见的文本。由于QString内部使用Unicode编码实现,所以它可以用于表示所有需要向用户呈现的文本。当然,对于仅程序员可见的文本并不需要都变为QString对象,可利用Qt提供的QCString或原始的“char”。(2)使用tr()函数获取所有需要翻译的文本。在Qt的翻译机制下,QObject::tr()函数可以帮助程序员取得翻译之后的文本。对于从QObject继承而来的类,QObject::tr()函数最终由QMetaObject::原创 2021-07-05 15:58:51 · 214 阅读 · 0 评论 -
QT学习:Qt对Office的基本读写
Excel软件具有完善的电子表格处理和计算功能,可在表格特定行列的 单元格上定义公式,对其中的数据进行批量运算处理,用Qt操作Excel 可辅助执行大量原始数据的计算功能,巧妙地借助单元格的运算功能 就能极大地减轻Qt程序本身的计算负担。Word是最为常用的办公软 件,很多日常工作资料都是以Word文档格式保存的。用Qt既可以对 Word中的文字也可以对表格中的信息进行读写。下面通过一个例子详细讲解Qt对Excel和Word 的基本读写操作。一、程序界面创建一个Qt桌面应用程序项目,项目名称为Offi原创 2021-07-05 15:28:22 · 2082 阅读 · 0 评论 -
QT学习:AxWidget界面显示
它的机制是:将桌面程序界面上的某个Qt控件重定义包装为专用于显示Office文档的QAxWidget对象实例,该实例与用户程序中所启动的特定Office进程相关联,就具备了显示外部文档的增强功能,本质上就是用Qt的组件调用外部的Microsoft Office组件,实际在后台执行功能的仍然是Microsoft Office的COM组件。例如,将 一个Qt的标签(QLabel)控件绑定到Excel进程来显示表格的程序代码如下:QAxWidget * mywidget = new QAxWidget("E原创 2021-07-05 15:13:25 · 2033 阅读 · 0 评论 -
QT学习:QAxObject对象访问
一、操作Excel的基本流程Qt操作Excel的基本流程如下图:(1)启动Excel进程、获取Excel工作簿集。 创建Excel进程使用如下语句:QAxObject *myexcel = new QAxObject("Excel.Application"); 通过进程获取Excel工作簿集,语句为:QAxObject *myworks = myexcel->querySubObject("WorkBooks"); 其中,myworks是工作簿集的引用,用户可根据需要定义其名称,同样原创 2021-07-05 14:12:50 · 918 阅读 · 0 评论 -
QT学习:Qt操作数据库
本节由不同Qt类支撑的三部分组成,QtSql模块层次结构如下图所示:一、Qt操作SQLite数据库Qt提供了一种进程内数据库SQLite。它小巧灵活,无须额外安装配置且支持大部分ANSI SQL92标准,是一个轻量级的数据库,概括起来具有以下优点。(1)SQLite的设计目的是实现嵌入式SQL数据库引擎,它基于纯C语言代码,已经应用在非常广泛的领域内。(2)SQLite在需要持久存储时可以直接读写硬盘上的数据文件,在无须持久存储时也可以将整个数据库置于内存中,两者均不需要额外的服务器端进程,即SQ原创 2021-07-05 13:12:09 · 7019 阅读 · 1 评论 -
QT学习:数据操作
一、插入数据语句INSERTINSERT语句可添加一条或多条记录至一个表中。INSERT语句有两种语法形式。语法1:INSERT INTO target [IN externaldatabase] (fields_list)// target是欲追加记录的表(Table)或视图(View)的名称,externaldatabase是外部数据库的路径和名称。 {DEFAULT VALUES|VALUES(DEFAULT|expression_list)} //需要插入的字段值表达式列表,其个数应与记录原创 2021-07-05 10:55:42 · 833 阅读 · 0 评论 -
QT学习:常用SQL命令
这里简单介绍以下在QT中常用的SQL命令,在之后将会新增一个分类专栏专门讲数据库。一、SELECT语句完备的SELECT语句很复杂,其主要的子句如下:SELECT [DISTINCT] [别名.]字段名或表达式 [AS 列标题] /* 指定要选择的列或行及其限定 */ //SELECT子句指出查询结果中显示的字段名,以及字段名和函数组成的表达式等。可用DISTINCT去除重复的记录行;AS列标题指定查询结果显示的列标题。当要显示表中所有字段时,可用通配符“*”代替字段名列表。 FROM tabl原创 2021-07-05 10:35:28 · 1728 阅读 · 1 评论 -
QT学习:数据库基本概念
一、数据和数据库(DB)利用计算机进行数据处理,首先需要将信息以数据形式存储到计算机中,因为数据是可以被 计算机接收和处理的符号。根据所表示的信息特征不同,数据有不同的类别,如数字、文字、表 格、图形/图像和声音等。 数据库(DataBaseDB),顾名思义,就是存放数据的仓库,其特点是:数据按照数据模型 组织,是高度结构化的,可供多个用户共享并且具有一定的安全性。二、数据库管理系统(DBMS)数据库管理系统(DataBase Management System DBMS),是位于用户应用程序和操作系原创 2021-07-05 07:22:31 · 405 阅读 · 0 评论 -
QT学习:多线程运用
一、服务器端编程首先,建立服务器端工程“TimeServer.pro”。文件代码如下。(1)在头文件“dialog.h”中,定义服务器端界面类Dialog继承自QDialog类,其具体代码如下:#include <QDialog> #include <QLabel> #include <QPushButton> class Dialog : public QDialog { Q_OBJECT public: Dialog(QWidget *parent原创 2021-07-05 07:21:13 · 363 阅读 · 0 评论 -
QT学习:线程等待与唤醒
使用QWaitCondition类解决生产者和消费者问题。源文件“main.cpp”的具体内容如下:#include <QCoreApplication> #include <QWaitCondition> #include <QMutex> #include <QThread> #include <stdio.h> const int DataSize=1000; const int BufferSize=80; int buf原创 2021-07-04 16:48:49 · 2944 阅读 · 0 评论 -
QT学习:多线程控制
实现线程的互斥与同步常使用的类有QMutex、QMutexLocker、QReadWriteLocker、QReadLocker、QWriteLocker、QSemaphore和QWaitCondition。下面举一个例子加以说明:class Key {public: Key() {key=0;} int creatKey() {++key; return key;} int value()const {return key;} private: int key; }; 在多线程环原创 2021-07-04 15:24:32 · 288 阅读 · 0 评论 -
QT学习:多线程
一、优势。(1)提高应用程序的响应速度。这对于开发图形界面的程序尤为重要,当一个操作耗时很长时,整 个系统都会等待这个操作,程序就不能响应键盘、鼠标、菜单等的操作,而使用多线程技术可将耗时长的 操作置于一个新的线程,从而避免出现以上问题。(2)使多CPU系统更加有效。当线程数不大于CPU数目时,操作系统可以调度不同的线程运行于不同 的CPU上。(3)改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为独立或半独立的运行部分, 这样有利于代码的理解和维护。二、特点(1)多线程程序的行为无法预原创 2021-07-04 15:06:12 · 564 阅读 · 0 评论 -
QT学习:事件过滤
事件过滤器实现动态图片按钮效果,详细操作步骤如下:(1)头文件“eventfilter.h”中声明了所需的各种控件及槽函数,其具体代码如下:#include <QDialog> #include <QLabel> #include <QImage> #include <QEvent> class EventFilter : public QDialog { Q_OBJECT public: EventFilter(QWidget *pare原创 2021-07-04 14:49:40 · 251 阅读 · 0 评论 -
QT学习:键盘事件
通过键盘控制图标的移动例子具体代码如下:(1)头文件“keyevent.h”的具体内容如下:#include <QWidget> #include <QKeyEvent> #include <QPaintEvent> class KeyEvent : public QWidget { Q_OBJECT public: KeyEvent(QWidget *parent = 0); ~KeyEvent(); void drawPix(); void k原创 2021-07-04 10:10:06 · 1632 阅读 · 0 评论 -
QT学习:鼠标事件
下面是鼠标事件例子的具体实现步骤。(1)在头文件“mouseevent.h”中,重定义了QWidget类的三个鼠标事件方法,即mouseMoveEvent、 mousePressEvent和mouseReleaseEvent。当有鼠标事件发生时,就会响应相应的函数,其具体内容如下:#include <QMainWindow> #include <QLabel> #include <QStatusBar> #include <QMouseEvent>原创 2021-07-04 09:55:18 · 1069 阅读 · 0 评论 -
QT学习:网络应用开发练习(文件下载)
在上篇文章网页浏览实的的基础上,实现一般页面文件的下载,并且显示下载进度。进入设计模式, 向界面上拖入Label、Line Edit、Progress Bar和Push Button等部件。首先,在“mainwindow.h”文件中添加头文件和类的前置声明:#include <QUrl> class QFile; 其次,添加如下私有槽声明:void httpFinished(); void httpReadyRead(); void updateDataReadProgress(原创 2021-07-04 09:28:34 · 152 阅读 · 0 评论 -
QT学习:网络应用开发练习(简单网页浏览器)
简单网页浏览器具体操作步骤如下:(1)在“myHTTP.pro”文件中添加如下语句: QT+=network(2)进入设计模式,向界面上拖入一个Text Browser,进入“mainwindow.h”文件,首先添加类的前置声明:class QNetworkReply; class QNetworkAccessManager; 然后添加一个私有对象定义:QNetworkAccessManager *manager; 再添加一个私有槽的声明:private slots: void r原创 2021-07-04 09:18:55 · 539 阅读 · 0 评论 -
QT学习:基于TCP的网络聊天室程序
TCP与UDP的差别如图:一、TCP工作原理如下图所示,TCP能够为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错 地送达网络上的其他计算机。因此,对可靠性要求高的数据通信系统往往使用TCP传输数据,但在正式收发数据前,通信双方必须首先建立连接。二、TCP编程模型下面介绍基于TCP的经典编程模型,TCP客户端与服务器间的交互时序如下图所示:三、TCP服务器端编程实例TCP服务器端的具体实现如下:建立工程TcpServer.pro,文件代码如下。(1)头文件“tcpserve原创 2021-07-04 09:11:33 · 1843 阅读 · 1 评论 -
QT学习:基于UDP的网络广播程序
用户数据报协议(User Data Protocol,UDP)是一种简单轻量级、不可靠、面向数据报、无连接的 传输层协议,可以应用在可靠性不是十分重要的场合,如短消息、广播信息等。 适合应用的情况有以下几种:(1)网络数据大多为短消息。(2) 拥有大量客户端。(3) 对数据安全性无特殊要求。(4)网络负担非常重,但对响应速度要求高。...原创 2021-07-04 08:32:34 · 687 阅读 · 0 评论 -
QT学习:获取本机网络信息
获取本机网络信息,具体实现方法如下:(1)头文件“networkinformation.h”的具体代码如下:#include <QWidget> #include <QLabel> #include <QPushButton> #include <QLineEdit> #include <QGridLayout> #include <QMessageBox> class NetworkInformation : publ原创 2021-07-03 15:29:02 · 502 阅读 · 0 评论 -
QT学习:监视文件和目录变化
使用QFileSystemWatcher来监视指定目录,具体使用方法如下:(1)在头文件“watcher.h”中,Watcher类继承自QWidget类,其具体内容如下:#include <QWidget> #include <QLabel> #include <QFileSystemWatcher> class Watcher : public QWidget { Q_OBJECT public: Watcher(QWidget *parent = 0原创 2021-07-03 14:53:53 · 509 阅读 · 0 评论 -
QT学习:获取文件详细信息
利用QFileInfo类获得文件信息,详细代码如下:(1)在头文件“fileinfo.h”中,类FileInfo继承自QDialog类,此类中声明了用到的各种相关控件和函数,其代码如下:#include <QDialog>#include <QLabel>#include <QLineEdit>#include <QPushButton>#include <QCheckBox>class FileInfo : public QDial原创 2021-07-03 14:42:37 · 1804 阅读 · 1 评论 -
QT学习:目录操作与文件系统
一、文件大小及路径获取得到一个文件的大小和所在目录,代码如下:#include <QCoreApplication>#include <QStringList>#include <QDir>#include <QtDebug>qint64 du(const QString &path){ QDir dir(path); qint64 size = 0; foreach(QFileInfo fileInfo,dir.原创 2021-07-03 10:47:43 · 258 阅读 · 0 评论 -
QT学习:读写二进制文件
使用QDataStream读写二进制文件。具体用法见如下代码:(1)头文件“mainwindow.h”的具体代码如下:#include <QMainWindow> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); void fileFun(); }(2)源文件“mainwindow.cpp”的具体代码如下:#i原创 2021-07-03 10:25:31 · 3929 阅读 · 0 评论 -
QT学习:读写文本文件
一、使用QFile类读写文本使用QFile类读写文本文件代码如下:(1)源文件“main.cpp”的具体实现代码如下:#include <QCoreApplication> #include <QFile> #include <QtDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QFile file("textFile1.txt"); //打开一个文件有原创 2021-07-03 10:18:38 · 1678 阅读 · 0 评论 -
QT学习:代理(Delegate)练习
利用Delegate设计表格中控件。实现步骤如下。(1)首先,加载表格数据,以便后面的操作。源文件“main.cpp”中的具体代码如下:#include <QApplication>#include <QStandardItemModel>#include <QTableView>#include <QFile>#include <QTextStream>int main(int argc,char *argv[]){ Q原创 2021-07-03 09:39:45 · 1286 阅读 · 0 评论 -
QT学习:视图(View)练习
通过利用自定义的View,实现一个对TableModel的表格数据进行显示的柱状统计图例子,以此介绍如何应用自定义的View。具体实现步骤如下。(1)完成主窗体,以便显示View的内容。MainWindow 类继承自QMainWindow类,作为主窗体。以下是头文件“mainwindow.h”的具体代码。#include <QMainWindow>#include <QStandardItemModel>#include <QTableView>#includ原创 2021-07-03 09:02:58 · 643 阅读 · 3 评论 -
QT学习:模型练习
通过实现将数值代码转换为文字的模型来介绍如何使用自定义模型。此模型中保存了不同军种的各种武器,实现效果如图8.3所示。具体操作步骤如下。(1)ModelEx类继承自QAbstractTableModel类,头文件“modelex.h”中的具体代码如下:#include <QAbstractTableModel>#include <QVector>#include <QMap>#include <QStringList>class ModelEx原创 2021-07-02 21:50:05 · 306 阅读 · 0 评论 -
QT学习:模型/视图基本概念
Qt的模型/视图结构分为三部分:模型(Model)、视图(View)和代理(Delegate)。其中,模型与数据源通信,并为其他部件提供接口;而视图从模型中获得用来引用数据条目的模型索引(Model Index)。在视图中,代理负责绘制数据条目,当编辑条目时,代理和模型直接进行通信。模型/视图/代理之间通过信号和槽进行通信,如图所示:(1)数据发生改变时,模型发出信号通知视图。(2)用户对界面进行操作,视图发出信号。(3)代理发出信号告知模型和视图编辑器目前的状态。一、模型InterView框架原创 2021-07-02 21:30:24 · 319 阅读 · 0 评论 -
QT学习:图形视图Graphics View
一、Graphics View框架结构的主要特点(1)在Graphics View框架结构中,系统可以利用Qt绘图系统的反锯齿、OpenGL工具来改善绘图性能。(2) Graphics View支持事件传播体系结构,可以使图元在场景(scene) 中的交互能力提高1倍,图元能够处理键盘事件和鼠标事件。其中,鼠标事件包括鼠标被按下、移动、释放和双击,还可以跟踪鼠标的移动。(3)在Graphics View框架中,通过二元空间划分树(Binary Space Pritining, BSP) 提供快速的图元原创 2021-07-02 21:05:15 · 11338 阅读 · 0 评论 -
QT学习:QPainter与QPainterPath
一、QPainter利用QPainter绘制图形,QPainter类中包含了丰富的绘制图形的函数,常用的有以下几种。(1)QPainter::drawLine():绘制直线(2)QPainter::drawRect():绘制矩形(3)QPainter::drawRoundedRect():绘制圆角矩形(4)QPainter::drawEllipse():绘制椭圆(5)QPainter::drawPolygon():绘制多边形(6)QPainter::drawPolyline():绘制多叉线(原创 2021-07-02 15:36:44 · 1786 阅读 · 0 评论 -
QT学习:位置函数
Qt提供了很多关于获取窗体位置及显示区域大小的函数,如x()、y()和pos()、rect()、size()、geometry()等,统称为“位置相关函数”或“位置函数”。几种主要位置函数及其之间的区别如下:(1) x()、y()和pos()函数的作用都是获得整个窗体左上角的坐标位置。(2) frameGeometry()函数与geometry()函数相对应,frameGeometry()函数获得的是整个窗体的左上项点和长、宽值,而geometry()函数获得的是窗体内中央区域的左上顶点坐标及长原创 2021-07-02 15:06:39 · 875 阅读 · 0 评论 -
QT学习:认识QMainWindow
QMainWindow是一个 为用户提供主窗口程序的类, 包含一个菜单栏 、 多个工具栏、多个锚接部件、一个状态栏及一个中心部件,Qt主窗口界面布局如下图所示。一、菜单栏菜单是一系列命令的列表。为了实现菜单、工具栏按钮、 键盘快捷方式等命令的一致性, Qt使用动作(Action)来表示这些命令。Qt的菜单就是由一系列的QAction动作对象构成的列表,而菜单栏则是包容菜单的面板,它位于主窗口标题栏的下面。一个主窗口只能有一个菜单栏。二、状态栏状态栏通常显示GUI应用程序的些状态信息, 它位于主窗原创 2021-07-02 13:57:41 · 290 阅读 · 0 评论 -
QT学习:QTime类
QTime的currentTime():用于获取当前的系统时间;QTime 的toString():用于将获取的当前时间转换为字符串类型。为了便于显示,toString()函数的参数需指定转换后时间的显示格式。显示格式有如下几种:(1)H/h: 小时(若使用H表示小时,则无论何时都以24小时制显示小时;若使用h表示小时,则当同时指定AM/PM时,采用12 小时制显示小时,其他情况下仍采用24小时制进行显示)(2)m:分(3)s:秒(4)AP/A:显示AM或PM(5)Ap/a:显示am或pm原创 2021-07-02 12:40:06 · 927 阅读 · 0 评论 -
QT学习:调色板
在实际应用中,经常需要改变某个控件的颜色外观,如背景、文字颜色等。Qt提供的调色板类QPalette专门用于管理对话框的外观显示。QPalette类相当于对话框或控件的调色板,它管理着控件或窗体的所有颜色信息。每个窗体或控件都包含一个QPalette对象,在显示时,按照它的QPalette对象中对各部分各状态下的颜色的描述进行绘制。在介绍具体用法时我们先来了解以下基本概念,QPalette类有两个基本的概念: 一个是 ColorGroup另一个是ColorRole。其中,ColorGroup 指的是以下三原创 2021-07-02 10:32:09 · 1138 阅读 · 0 评论 -
QT学习:进度条
一般来说,在处理长时间任务时需要提供进度条用于显示时间,告诉用户当前任务的进展情况。进度条对话框的使用方法有模态方式与非模态方式两种。相比之下模态方式的使用比较简单方便,但必须使用AplaicotoprocessEventSt使事件循环保持正常进行状态,以确保应用不会被阻塞。非模态方式是通过QTime实现定时设置进度条的值。QTime类的用法我们在后面将会讲解。Qt提供了两种显示进度条的方式(1)QProgressBar :提供了一种横向或纵向显示进度的控件表示方式,用来描述任务的完成情况。(2)QP原创 2021-07-02 09:42:15 · 1383 阅读 · 0 评论 -
QT学习:工具盒类
工具盒类即为QToolBox。它提供了一种列状的层叠窗体,而QToolButton提供了一种快速访问命令或选择项的按钮,通常在工具条中使用。抽屉效果是软件界面设计中的一种常用形式,可以以一种动态直观的方式在大小有限的界面上扩展出更多的功能。下面我们以代码形式来介绍具体用法:#include "drawer.h"#include<QGroupBox>#include<QVBoxLayout>Drawer::Drawer(){ setWindowTitle(tr(原创 2021-07-02 08:50:12 · 182 阅读 · 0 评论 -
QT学习:基本对话框
在QT的基本对话框中包括标准文件对话框、标准颜色对话框、标准字体对话框、标准输入对话框以及标准消息对话框,各种标准基本对话框通过调用各自不同的静态函数来完成其功能。下图为标准基本对话框所需的静态函数一、标准文件对话框用户可以通过如上图这些函数可以很方便地定制自己地文件对话框。getOpenFileName()函数地详细介绍如下:QString QFileDialog: :getOpenFileName( Qwidget* parent=0,//标准文件对话框的父窗口 const原创 2021-07-01 22:33:32 · 331 阅读 · 0 评论 -
QT学习:容器类及QVariant类
Qt提供了一组通用的基 于模板的容器类。对比C++的标准模板库中的容器类,Qt 的这些容器更轻量、更安全并且更容易使用。存储在Qt容器中的数据必须是可赋值的数据类型,也就是说,这种数据类型必须提供一个默认的构造函数(不需要参数的构造函数)、一个复制构造函数和一个赋值操作运算符。这样的数据类型包含了通常使用的大多数数据类型,包括基本数据类型(如int和double等)和Qt的一些数据类型(如QString、 QDate和QTime等)。不过,Qt的QObject及其他的子类(如QWidget和Qdialo原创 2021-07-01 17:03:19 · 1088 阅读 · 0 评论