自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Qt系列文章之 QAbstractItemModel(下)

本文紧接着上一文介绍如何对用户模型剩下的类进行实现,并将其集成到视图并显示出来。QAbstractItemModelinsertRows(int row, int count, const QModelIndex &parent)该函数实现一次性向表格之中从row位置开始插入count行,一个简单的实现手段是:{ if(row<0 || row>m_dataVector->size() || count<1) return false; begin

2020-10-04 10:36:54 2806

原创 Qt系列文章之 QAbstractItemModel(中)

上一篇文章基于QAbstractItemModel新建了一个用户模型类,此文紧接上一篇文章来对用户模型进行具体设计和实现。QAbstractItemModel生成的用户模型给出了模型的标准接口;但是任何模型都是对数据封装,那么必然需要专用对象来储存数据,而这个储存数据的对象就具有十分多的形式,可以是Qt/C++容器、数组、字符串、文件、SQL对象等。而用户类就是将用户各种形式的数据储存方式转为统一的模型接口以供其他类(如视图类)来使用,同时将其他类的操作转化到对具体数据对象的具体操作(如写、添加、删除等

2020-10-03 15:14:27 2261

原创 Qt系列文章之 QAbstractItemModel(上)

上一篇文章对Qt MVC框架下的模型类进行大致介绍,本文基于QAbstractItemModel来开发第一个用户模型类,重点关注各个接口的实现。QAbstractItemModel用户类需要集成基类QAbstractItemModel来开发自己的数据模型,一种方法就是按照之前的方式新建一个CPP类,基类选择QAbstractItemModel,然后在代码之中依次对每个需要实现的函数进行重载定义和实现;不过这样做会比较麻烦,而且由于模型虚方法很多,容易出错和遗漏。Qt开发器提供了更好的方法帮助用户快速开发

2020-09-22 16:02:29 3247

原创 Qt系列文章之 Qt Model Class

Qt Model ClassQt提供了一些列相互继承的Model类体系,Qt的Model类是对用户数据进行体系化封装并提供统一操作接口的一大类模块。Qt提供的模型类十分多,大致可以分为三种:不可实例化的抽象基类、代理模型类和可实例化模型类。其中QStringListModel和QFileSystemModel是特定场景使用的高级封装模型。一般的模型分为如下三种,List模型,表格模型和树模型。这三种模型都可以基于抽象基类QAbstractItemModel进行继承来开发。当然不论是那种模型,都是基于基

2020-09-22 13:42:32 639

原创 Qt系列文章之 Model/View 框架

上一篇文章介绍了如何使用QMenu创建鼠标菜单及其和槽函数的关联,本文开始介绍Qt中十分重要的Model/View 框架。Model/View 框架MVC是交互式系统开发中十分重要的体系,MVC 由三种对象组成。模型是应用程序对象,视图是其在屏幕上的呈现,控制器定义了用户界面对用户输入的反应方式。 在MVC之前,用户界面设计往往会将这些对象整合在一起。 MVC 使它们解耦以增加灵活性和重用性。在Qt中也包含这三个要素,分别是模型类、视图类和代理类。三者一起构成了Qt的Model/View 框架。 (如下

2020-09-21 22:46:50 297

原创 Qt系列文章之 右键菜单QMenu(下)

上一篇文章介绍了如何在用户自定义表格窗体中触发菜单窗体,这一篇文章介绍如何将菜单中的Action和槽函数关联起来。菜单QAction关联槽函数首先需要定义每个动作对应的槽函数,一共定义了三个动作,需要在头文件对三个对应的槽函数进行定义。三个槽函数只希望在用户窗体内部调用,因此将其定义为私有属性:private slots: void addOneRowSlot (); //为表格添加一行槽函数 void removeOneRowSlot (); //删除表格一行槽函数

2020-09-21 22:45:21 563

原创 Qt系列文章之 右键菜单QMenu(上)

上一篇文章介绍了自定义用户窗体并提升到ui文件中的操作流程,本文介绍用户界面上常用的右键菜单栏的创建。右键菜单QMenu用户界面鼠标交互是十分常见的人机交互形式,大部分窗体软件都具备类似右键鼠标出现一个菜单栏,用户可选择需要的操作动作。本文基于上一文的场景,介绍如何在一个表格窗体中右键出现一个用户可以选择动作的菜单栏。由于右键动作只是针对表格窗体,必然这个菜单栏也需要在用户自定义窗体中进行开发,作为用户窗体属性的一部分。首先在用户窗体的头文件之中包含需要的两个头文件:#include <QMe

2020-09-17 19:30:33 2523 2

原创 Qt系列文章之 自定义控件并提升到ui文件

上一篇文章介绍Qt中的一个基本事件QMouseEvent,此文介绍如何基于现有控件类来设计自己的控件并将其提升到界面中的控件之上。自定义控件类上一篇文章中使用鼠标事件来捕获界面鼠标输入信息,但是当将鼠标放到表格窗体上进行点击时并没有任何反应。那是因为表格窗体是一个独立的窗体对象,每个窗体对象都有自己的鼠标事件,因此如果要在表格窗体上操作鼠标,需要对表格窗体进行单独的事件函数定义。这样做的方法是基于原来的QTableWidget自定义用户窗体类。在Qt项目中新建一个C++ Class,输入一个自定义的用

2020-09-11 09:23:37 1352

原创 Qt系列文章之 mousePressEvent

上一篇文章介绍QTabWidget的使用技巧。本文开始介绍Qt最常用的事件之一QMouseEvent。鼠标事件 mousePressEvent鼠标事件是Qt中十分重要的人机交互形式。鼠标事件包括很多内容,此处先介绍最基本的mousePressEvent事件函数。如前期文章所示,Qt中的大部分事件函数都已经提供了函数接口,我们只需要在具体项目类中对这些事件函数进行具体实现即可。打开Qt的widget帮助文档,可以找到mousePressEvent的函数定义如下所示:mousePressEvent是一

2020-09-10 22:04:51 15531 2

原创 Qt系列文章之 QTabWidget

上一篇文章介绍如何对QMessgeBox进行使用。本文紧接上文内容继续对Qt的窗体文件开发介绍。一般主界面会有很多控件和交互区域;如果把所有的控件都放在一个界面全部显示,整个界面就会显得非常臃肿繁琐。那么使用分页式的表格窗体布局就能将不同类型的控件布局到不同的窗体之中,再根据需要选择即可。Qt提供多种叠加窗体布局,如QStackedWidget、QToolBox和QTabWidget等。本文主要介绍QTabWidget的使用,其他窗体使用方式类似。翻页式表格窗体 QTabWidgetQTabWidg

2020-09-08 10:00:10 5512

原创 Qt系列文章之 QMessageBox

上一篇文章介绍了如何使用QDataStream来实现对界面信息的二进制序列化储存和读入操作;采用的是关闭窗口就默认保存界面信息,其实有的时候我们不一定非要对当前版本的信息进行保存,此时可以给用户弹出一个信息对话框让用户选择是否保存配置信息到文件。信息对话框 QMessageBox信息对话框是非常常用的界面元素,Qt的实现方式是QMessageBox。QMessageBox的帮助文档读者可以参考Qt的帮助手册:QmessageBox的属性和方法很多,可以按照普通的类来实例化对象,然后调用对象。不过一般

2020-09-08 09:52:15 654

原创 Qt系列文章之 QDataStream

上一篇文章介绍了如何使用QFileDialog来选择文件路径并读入项目界面,本文介绍如何使用Qt的序列化技术来将用户定义的一些变量保存到文件,用到的主要模块是QDataStream。对象序列化 QDataStreamQt提供了两个关键的二进制序列化模块:QDataStream和QTextStream,本文主要介绍常用简单对象二进制序列化技术QDataStream。希望在界面关闭的时候自动将用户修改的界面属性值保存到一个文件之中,以便后面读入的时候使用。 当然这种操作还有更好的方式,比如编写配置文件或者Q

2020-08-27 15:59:53 2871 1

原创 Qt系列文章之 QFileDialog

上一篇文章介绍了如何使用QFile来对文件进行写操作,本文介绍文件路径选择对话框QFileDialog的使用以及将其和文件读操作结合在一起。文件路径对话框 QFileDialogQt提供了大量的对话框,其中比较常用的是QDialog,基于QDialog又有几个常用的派生对话框类,比如:QColorDialog, QErrorMessage, QFileDialog, QFontDialog, QInputDialog, QMessageBox, QProgressDialog和QWizard。本文将先介

2020-08-24 21:17:42 1015

原创 Qt系列文章之(十四)QFile

上一篇文章介绍了基于条目的表格窗体的创建和使用,任何一个软件项目,文件读写是必不可少的,本文将介绍如何对文件进行读写操作。文件读写 QFile在对文件进行读写前,相对前期的主界面窗体菜单栏和工具栏做一些处理: m_fileMenu = menuBar()->addMenu("&File"); QAction *openAction = m_fileMenu->addAction("Open"); QAction *saveAction = m_fileMenu

2020-08-16 16:47:54 532

原创 Qt系列文章之(十三)表格窗体

上一篇文章介绍了几个常用的界面控件模块,如LineEdit等,本文介绍另一类界面窗口必不可少的窗体—表格窗体。Qt一共提供了两大类表格窗体:基于Model的表格和基于条目的表格窗体。基于条目的表格是基于Model表格基础上开出来的。本文主要介绍第二种表格开发:一共三种条目化表格,比较常用的是Table Widget,也就是QTableWidget。QTableWidget需要基于表格化条目QTableWidgetItem来构造每一个栅格的内容,修改和定位也需要使用QTableWidgetItem。 如果

2020-08-10 15:02:36 762

原创 Qt系列文章之(十二)其他几个常用控件

上一篇文章介绍了QPushbutton,本文再基于上一篇文章介绍另外几个常用控件。打开ui编辑器,可以在左边看到很多控件,使用拖拽即可拖入ui编辑框。QLabel 和 QLineEdit最常用的控件组合是QLabel和QLineEdit,用来提示内容和实现输入的操作。在上一文的ui文件中拖入一个QLabel 和一个QLineEdit控件,修改QLabel名称为“标签”,修改QLineEdit的对象名称为lineEdit_input。同样的,按照上文的例子,希望建立一个信号和槽的关联关系,输入完字符

2020-08-09 16:39:09 202

原创 Qt系列文章之(十一)QPushbutton

上一篇文章介绍了如何基于QMainWindow开发界面项目文件,介绍了三个关键文件ui文件、cpp文件和h文件,这三个文件实现了将界面控件设计和底层算法开发的解耦,这也是面向对象数据封装的主要精髓思想。本文将基于上一篇文章中开发的界面来添加基本控件。按钮控件QPushButton按钮控件是界面开发里面十分重要的元素,通过点击可以关联相关的动作。Qt的控件比较多,常用的是QPushButton。Qt中对QPushButton做了详细的介绍:可以按照Qt的帮助,通过代码QPushButton *butt

2020-08-03 15:30:28 1344 1

原创 Qt系列文章之(十) ui文件的使用

上一篇文章在主函数中构造了一个简单的主窗口界面,继承了一些基本元素,如菜单栏、工具栏、悬浮窗口、主界面等元素。不过这些元素都是在栈区开辟的临时变量,放在主函数里面来实现。 这不是一种标准的UI界面开发手段。 一般在界面项目开发之中有几个典型的开发规则:• 将控件布局设计和底层函数开发解耦;这种方式就是构造专门的类来负责界面控件布局设计,构造另外一个类来实现各个控件关联的动作函数和属性。一般第二个类直接继承第一个类(或者集成第一个类)来开发。(Python 中开发界面是继承第一个类开发,而C++中一般是在第

2020-07-31 19:15:51 1646

原创 Qt系列文章之(九)QMainWindow

上一篇文章介绍了如何构建Qt界面类项目的开发环境,从本文开始介绍一些常用界面控件的使用。主界面(QMainWindow)任何一个窗口软件都至少要包含一个主用户界面,如Qt Creator的主界面,包含必要的标题、下拉菜单、快捷控件、信息交互区域和主操作区域等。因此,我们构建一个用户界面项目的第一步应该是构建这样一个主窗口区域,其他的所有功能都将围绕主窗口来展开。QMainWindow就是Qt提供的用来开发主窗口的基类。查阅Qt的帮助文档,简单了解了一下QMainWindow的一些基本特点。QM

2020-07-27 21:29:41 550

原创 Qt系列文章之(八)QApplication

前期的文章介绍了一些关于Qt非界面类QObject的知识,Qt非界面类还有很多常用模块类,我们将在后面使用到的时候依次介绍给读者。从这篇文章开始将依次介绍一些Qt界面类的使用,本文将从构建Qt界面环境开始。界面应用环境构建(QApplication)任何一个Qt项目,特别是界面项目,如果要使用Qt的信号与槽、多线程、事件驱动等机制。都需要包含且只能包含一个应用(Application)对象。Application负责初始化项目需要的资源、监听外部交互信息、项目结束时清除项目所占有的资源等。 Qt一共提供

2020-07-23 19:19:50 1591

原创 Qt系列文章之(七) QObject模块 05

Qt并不是一定要用来做界面开发,其实Qt内部的很多非界面模块也十分优秀,本文紧接着Qt系列的上一篇文章,继续介绍如何使用QObject做基类来开发模块。本文以QThread为例介绍Qt多线程技术的基本知识。多线程(QThread)多线程技术是当今编程一个重要领域,C++的很多扩展包都能很好的实现对多线程技术进行开发。Qt框架之中也有一些多线程的模块包,其中最重要的就是QThread类。基于QThread实现多线程编程主要有两种手段:将以QObject或者QObject继承类为基类开发的用户类实例并

2020-07-20 20:32:22 279

原创 Qt系列文章之(六)— QObject模块 04

Qt并不是一定要用来做界面开发,其实Qt内部的很多非界面模块也十分优秀,本文紧接着Qt系列的上一篇文章,继续介绍如何使用QObject做基类来开发模块。本文以一个计时器为例来介绍Qt的Event System的入门知识,后续文章会继续深入介绍Event相关内容。事件体系(Event System)Qt帮助文本对“Event System”的解释是:“In Qt, events are objects, derived from the abstract QEvent class, that repres

2020-07-15 21:07:13 263

原创 Qt系列文章之(五)— QObject模块 03

Qt并不是一定要用来做界面开发,其实Qt内部的很多非界面模块也十分优秀,本文紧接着上一篇文章,继续介绍使用QObject做基类来开发模块。信号与槽(Signals and slots)信号驱动是面向对象编程的精髓,对象与对象之间通过各种信号来传递信息,大部分的面向对象开发的信号驱动都是通过回调函数方式串联在一起。而Qt下实现信号驱动的机制是其信号与槽(Signals and slots)体系。要实现信号和槽之间的关联,需要三个部分:1-信号函数构造;2-槽函数构造;3-信号和槽关联。信号就像广播一样,

2020-07-09 14:37:05 266

原创 Qt系列文章之(四)— QObject模块 02

Qt并不是一定要用来做界面开发,其实Qt内部的很多非界面模块也十分优秀,本文从紧接着上一篇文章,继续介绍使用QObject做基类来开发模块。内存空间开发和释放内存管理是C/C++的核心技术,也是一个C/C++工程师实现质的飞跃的门槛。在Qt框架下,内存开辟和释放技术是无处不在。 此处不再详细介绍C++指针的一些基本知识,有兴趣可以阅读相关文章和书籍,在博客后期也会同步公号(不如起而行之)写一些关于C++指针介绍的文章。内存开辟离不开指针定义符号“*”和取地址符“&”;而在C++中可以开辟的内存

2020-07-04 13:46:11 404 1

原创 Qt系列文章之(三)— QObject模块 01

Qt系列文章之(三)— QObject模块 01QObject模块介绍以QObject为基类创建用户类实例化并测试对象方法Qt并不是一定要用来做界面开发,其实Qt内部的很多非界面模块也十分优秀,本文从Qt的第一个基类开始介绍如何认识QObject和据此开发自己的用户类。QObject模块介绍QObject的帮助文档第一句这样写“The QObject class is the base class of all Qt objects.” QObject模块是所有Qt核心类(不论是界面类/非界面类)的基

2020-07-02 21:43:03 710 1

原创 Qt系列文章之(二)— 模块系统

Qt系列文章之(二)— 模块系统Qt模块系统比较复杂,包含几十个不同领域的模块。整体来说,Qt模块分为三个大类:基础模块Qt Essentials,附加模块Qt Add-Ons和附加商业模块Value-Add Modules。模块列表都可通过Qt Creator帮助界面查询到,Value-Add Modules部分属于商业模块,本文不做介绍。Qt EssentialsQt Essentials模块组构成了Qt的跨平台开发的基础模块组,包括如下模块包:Qt Core 其他模块都用到的核心非图形类,

2020-07-02 20:51:54 417

原创 Qt 安装入门

Qt 安装入门Qt版本和安装Qt Creator新建一个项目VS IDE开发Qt项目先简单介绍一下Qt框架(本段余下内容源自百度百科 )。“Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器-Meta Object Compiler, moc)以及一些宏,Qt很容易扩展,并且允许真正地组件编程。2008年,Qt Company科技

2020-07-01 22:52:27 1929

空空如也

空空如也

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

TA关注的人

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