Qt
文章平均质量分 72
早起的虫儿灬
这个作者很懒,什么都没留下…
展开
-
(四十三)信号与槽再探
一个事实:在实际的项目开发中,大多数时候是直接将组件中预定义信号连接到槽函数 Qt中信号(Signal)信号只是一个特殊的成员函数声明1. 函数的返回值是void类型2. 函数只能声明不能定义 信号必须使用signals关键字进行声明1. 函数的访问属性自动被设置为protected2. 只能通过emi原创 2017-03-07 00:24:47 · 587 阅读 · 0 评论 -
(十九)Qt中的文件操作
Qt中的I/O操作1、Qt通过统一的接口简化了文件与外部设备的操作方式2、Qt中的文件被看作一种特殊的外部设备3、Qt中的文件操作与外部操作相同(Qt通过统一的方式读写文件和外部设备)4、QIODevice类是所有输入输出IO类的基类,为IO类提供了统一的调用接口 I/O操作中的关键函数接口(I/O操作的本质:连续存储空间的数据读写)1、打开设备:原创 2017-02-10 07:53:18 · 766 阅读 · 0 评论 -
(十六)主窗口中的状态栏
状态栏的概念与意义:1、状态栏是程序中输出简要信息的区域2、状态栏一般位于主窗口最底部3、状态栏的元素可以是各种窗口组件(即可以放置任意QWidget组件)4、状态栏是程序中输出简要信息的区域,其中信息分为: 1)、临时信息,如一般的提示信息 2)、常规信息,如显示页数和行号 3)、永久信息,如显示版本号或者日期原创 2017-02-08 23:16:06 · 1012 阅读 · 0 评论 -
(十四)应用程序中的主窗口
程序中主窗口:1、与用户长时间交互的顶层窗口2、程序绝大多数功能直接由主窗口提供3、主窗口通常是应用程序启动后显示的第一个窗口4、整个程序由一个主窗口与多个对话框组成 Qt中的主窗口:1、Qt中直接支持主窗口的概念2、QMainWindow是Qt中主窗口的基类3、QMainWindow继承于QWidget,QMainWindow是一种容器类型的组件原创 2017-02-08 18:54:07 · 669 阅读 · 0 评论 -
(十二)分割窗口
QSplitter类:1、QSplitter继承自QFrame,因此QSplitter也属于容器组件2、QSplitter将加入其中或将以其为父组件的子窗口组件通过分隔条分割3、QSplitter中的子窗口部件会按照加入或创建的顺序排放(从左到右/从上到下)3、用户可以拖动分隔条来改变子窗口组件的大小 一般直接将QSplitter对象作为顶级组件(窗口)使用QSplit原创 2017-02-07 07:41:47 · 353 阅读 · 0 评论 -
(十一)布局管理器综合实例
开发一个向导用户界面:1、在同一界面上展现不同的向导页2、通过上/下一步按钮切换页面3、不同页面上的元素组件和组件排布都不相同4、页面中的组件通过布局管理器进行排布 界面设计:通过嵌套管理布局 通栈式布局管理器管理不同向导页 通过子组件生产不同页 代码:#include "Widget.h"#include #inclu原创 2017-02-06 21:37:41 · 439 阅读 · 0 评论 -
(十)布局管理器
绝对定位(直接在像素级指定各组件的位置与大小)有一些缺点:1、对于某些平台,窗口部件的大小可能并不合适(无法自适应父窗口的变化)2、位置与大小需要人工计算,难以维护 布局管理器提供相关类对界面组件进行布局管理使用布局管理器:1、任意容器类的组件都可以指定布局管理器2、能够自动排列窗口中的界面组件3、窗口变化后自动更新界面组件的大小此处组件1与组件原创 2017-02-06 21:36:50 · 947 阅读 · 0 评论 -
(九)标准对话框
Qt为开发者提供了一些可复用的对话框类型Qt提供的可复用对话框全局继承自QDialog类使用方法:Qt中所有标准对话框遵循相同的使用方式定义对话框对象->设置对话框属性->获取对话框数据(与用户交互后)->处理对话框数据 消息对话框(QMessageBox):作用:1、为用户提示重要信息2、强制用户进行操作选择 使用: /原创 2017-02-06 21:35:14 · 408 阅读 · 0 评论 -
(八)对话框
对话框:与用户进行短暂交互的顶层窗口(应该只为对话框设计单一功能)QDialog 是Qt中所有对话框窗口类的基类:QDialog继承于QWidget,也是一种容器容器类型组件QDialog类及其子类不能作为子部件嵌入其他容器中QDialog是定制了窗口样式的特殊的QWidget 对话框分类:模态对话框( 调用成员函数exec()显示的对话框)显示后用户无法与其他原创 2017-02-06 21:34:11 · 277 阅读 · 0 评论 -
(七)计算器实例
开发一个支持四则运算且能识别错误计算式的计算器 计算器示例界面设计:以QWidget对象作为窗口,子组件为QLineEdit对象与QPushButton对象组件间间隔10px,按钮宽40px、高40px,文本框组件宽5 * 40px + 4 *10px、高30px去除窗口的最小、大化按钮固定窗口大小禁止文本框直接输入界面元素架构设计:使用面向对象的继原创 2017-02-06 21:31:48 · 1039 阅读 · 0 评论 -
(六)Qt内存管理
父子关系:所有指定了父对象的Qt对象(继承自QObject类的实例)与其父对象间存在父子关系:每个Qt对象都保存有指向其所有子对象的指针每个Qt对象都有一个指向其父对象的指针当指定(通过构造函数指定,或通过setParent函数)Qt对象的父对象时:其父对象会在子对象链表中加入指向该对象的指针该对象会保存指向其父对象的指针 当Qt对象被销毁时该对象会原创 2017-02-06 21:30:04 · 443 阅读 · 0 评论 -
(二十)文本流与数据流
Qt中将文件类型分为2大类:1、文本文件:文件的内容是可读的文本字符2、数据文件:文件内容是直接的二进制数据 QFile类直接支持文本文件和数据文件的读写(通过继承自QIODevice的成员函数)qint64read ( char * data, qint64 maxSize )QByteArrayread ( qin原创 2017-02-11 00:16:50 · 1886 阅读 · 0 评论 -
(二十一)缓冲区操作与目录操作
Qt中缓冲区的概念1、缓冲区的本质是一段连续的存储空间2、QBuffer是Qt中缓冲区相关的类3、在Qt中可以将缓冲区看作一种特殊的I/O设备4、文件流辅助类可以直接用于缓冲区操作 QBuffer类:1、QBuffer类为QByteArray提供了一个QIODevice接口,它允许使用QIODevice接口来访问QByteArray2、QByteArray被QBuf原创 2017-02-11 22:13:05 · 689 阅读 · 0 评论 -
(四十一)视图中的委托
视图与委托1、 委托是视图的一部分,需要承担数据显示的部分工作2、 视图负责确定数据的显示方式(列表、表格、树形)3、 委托负责具体数据项的显示和编辑(数据项值、编辑器)4、 视图和委托共同完成数据显示功能和数据编辑功能 /*1、在视图setItemDelegate()时,将参数设置为NULL,即取消视图的委托,运行时,仍能看出视图是以怎样的方式显示数据的(能分原创 2017-03-03 09:01:52 · 400 阅读 · 0 评论 -
(四十)模型视图中的委托
传统的MVC设计模式模型负责组织数据视图负责显示数据控制器负责处理用户输入 Qt中模型视图设计模式视图中继承了处理用户输入的功能 视图将用户输入作为内部独立的子功能而实现 模型视图中的委托1、 抽象类QAbstractItemDelegate是委托类的基类2、 Qt4.4版本后的标准委托是QSt原创 2017-03-02 09:01:29 · 752 阅读 · 0 评论 -
(三十九)自定义模型
自定义模型实例分析需求分析在文件中以行的形式存储了考试成绩信息(ID, Name,Score)开发GUI程序显示文件中的信息,并能计算平均成绩,查找最好成绩与最差成绩,可刷新显示的内容和删除内容 系统架构工程中常用数据应用架构为4层结构:数据层、数据表示层、数据组织层、数据显示层 4层架构设计的好处:4层架构间耦合性低,非常易于扩展和维护系统核心类图原创 2017-03-01 19:08:34 · 418 阅读 · 0 评论 -
(三十八)通用模型与QVariant
QStandardItemModelQt中通用的模型类QStandardItemModel1、 QStandardItemModel继承自QAbstractItemModel2、 以数据项QStandardItem为基本单位来组织数据3、 QStandardItemModel能够以任意的方式组织数据(线性、非线性)4、 每一个数据项能够存储多个具体数据(通过附加数据角色原创 2017-02-28 08:59:27 · 1651 阅读 · 0 评论 -
(三十七)模型视图设计模型
模型视图设计模式模型视图设计模式的核心思想1、模型(数据)与视图(显示)相分离2、模型对外提供标准接口存取数据(不关心数据如何显示)3、视图自定义数据的显示方式(不关系数据如何组织、存储) 注:模型里面并不真正存储数据(数据少的话也可以直接存储在模型里),模型只是负责从诸如磁盘文件、数据库、网络通讯等获得源数据,并提供给视图,视图对数据进行修改,然后再通过模型更新源数据。原创 2017-02-28 00:01:58 · 919 阅读 · 0 评论 -
(三十二)多页面切换组件
Qt中多页面切换组件QTabWdgetQTabWdget:1、 能够在同一窗口中自由切换不同的页面的内容2、 是一个容器类型组件3、 提供了友好的页面切换方式 使用方式:1、 创建QTabWidget对象2、 使用成员函数intaddTab ( QWidget * page, const QString & label )原创 2017-02-21 00:21:13 · 1022 阅读 · 0 评论 -
(三十一)Qt中的调色板QPalette
Qt中的调色板QPaleQPalette类:1、 QPalette类是Qt窗口中组件的调色板,管理着Qt组件的所有颜色信息,控制着组件的颜色(QPalette是Qt中标志颜色信息的数据结构)2、 每个窗口组件都拥有一个QPalette对象(QPalette对象为QWidget类的成员)3、 窗口组件外观所使用的颜色都定义于调色板中4、 重新设置窗口组件调色板的值能够改变原创 2017-02-20 18:08:52 · 2006 阅读 · 0 评论 -
(三十)自定义事件
自主发送事件:1、 阻塞型事件发送:事件发送后需要等待事件处理完成bool QCoreApplication::sendEvent ( QObject * receiver, QEvent * event ) [static] 2、非阻塞型事件发送: 事件发送后立即返回 事件被发送到事件队列中等待处理 voidQCo原创 2017-02-18 08:15:12 · 393 阅读 · 0 评论 -
(二十九)QMimeData类与拖放事件
QMimeData 类QMimeData类为记录自身MIME信息的数据提供了一个容器 #include 继承自QObject 详细描述QMimeData类为记录自身MIME信息的数据提供了一个容器QMimeData通常用于描述可以被存储在剪贴板、可以被通过拖拽机制传输的信息。QMimeData对象将他们持有的数据与相应的MIME类型相关联,以确保信息可以在两个原创 2017-02-17 22:04:07 · 2735 阅读 · 0 评论 -
(二十八)Qt中的事件处理
Qt事件1、 在Qt中,Qt是一个QEvent对象2、 Qt事件用于描述程序内部或外部发生的动作3、 任意的QObject对象都具备事件处理的能力(想要接受并处理事件的对象必须继承自QObject) QEvent是所有事件对象的抽象基类 事件来源1、Spontaneous events(自发事件)由系统消息(鼠标按键、键盘按键灯)转化而来2、Pos原创 2017-02-16 02:37:19 · 885 阅读 · 0 评论 -
(四)初探信号与槽
Qt中封装了具体操作系统的消息机制、遵循经典的GUI消息驱动事件模型(程序中将具体消息映射到指定的函数,当消息触发时,指定函数被调用) 信号与槽(Qt中的核心机制)概念:信号:由操作系统产生的消息槽:程序中的消息处理函数连接:将系统消息绑定到消息处理函数 Qt消息处理机制模型:信号到槽的连接必须发生在两个Qt类对象之间,用于对象之间的通信 con原创 2017-02-06 21:29:20 · 400 阅读 · 0 评论 -
(三)窗口与坐标
窗口组件:Qt中的组件分为:容器类(父组件):用于包含其他的界面组件功能类(子组件):用于实现特定的交互功能 窗口与子组件:Qt中没有父组件的顶级组价叫做窗口Qt中嵌入在窗口(拥有父组件)中的组价叫做子组件 QWidget:QWidget类是Qt中所有窗口组件类的父类(superclass),Qt中每个窗口组件都是一个QWidgetQWidget类继承自原创 2017-02-06 21:28:12 · 620 阅读 · 0 评论 -
(二十六)Qt容器之顺序容器
顺序容器(容器中的数据线性存储)有:QList(数组列表)、QLinkedList(链表)、QVector(向量)、QStack(栈)、QQueue(队列) QVector(向量):1、 QVector是一个类似数组的容器,它将数据存储在连续的内存空间中2、 QVector知道自己的长度,并且可以改变其大小3、 QVector支持随机访问4、 在QVector尾部添原创 2017-02-14 00:38:54 · 2496 阅读 · 0 评论 -
(二十三)Qt中的容器类简介
Qt中也提供了一组通用的基于模板的容器类(containerclasses)。与STL中的容器类相比:1、 Qt中的容器类更轻量、更安全、更容易使用2、 Qt容器类在所有平台上运行时表现一致,而不仅仅是接口接口一致3、 Qt容器类都是隐式数据共享的,这使得我们在使用时可以pass-by-value而不用担心由此带来的性能问题(在没有隐式共享的情况下,如果操作类对象时使用pas原创 2017-02-12 10:21:05 · 549 阅读 · 0 评论 -
(二十五)Qt : 隐式数据共享(copy on write)
转自:http://www.cnblogs.com/chengkeke/p/5417385.html作者:永不停息;copy on write 意思当内容有变动的时候,才对容器中的数据结构进行复制。否则仅作共享。QT许多类中使用了隐式数据共享技术,来最大化资源利用率和最小化拷贝时的资源消耗。 在数据传递时,其实只传递了数据的指针,而只有函数发生需要写入的情况时,数据转载 2017-02-13 07:27:12 · 346 阅读 · 0 评论 -
(二十四)容器的遍历、隐式共享
Qt中迭代分为两类1、 只读迭代器:不能改写对待器指向的数据2、 读写迭代器:可以更改迭代器指向的数据 Qt中Java风格的迭代器:1、只读迭代器类:Q + “容器名” + Iterator,如QVectorIterator为只读向量迭代器,其中QVectorIterator是模板类,并不是类型,需要指定信息说明实例化为什么类型QVectorIterator2、读写迭代原创 2017-02-13 06:58:22 · 346 阅读 · 0 评论 -
(三十三)QToolButton
作者:前行中的小猪!地址:http://blog.csdn.net/goforwardtostep/article/details/52127507QtDesigner中Qt助手中以上是QToolButton主要的四个属性,下面分别简述这四个属性的作用。一、arrowType属性在Qt助手中可以看到arrowType属性有5个值,下面转载 2017-02-21 08:41:48 · 759 阅读 · 0 评论 -
(十补)自定义布局管理器
作者:一去丶二三里 博客地址:http://blog.csdn.net/liang19890820简述手动布局另一种方法是通过继承QLayout类编写自己的布局管理器。下面我们详细来举一个例子-QCardLayout。它由同名的Java布局管理器启发而来。也被称之为卡片布局,每个项目偏移QLayout::spacing()。简述定义实现转载 2017-02-18 19:52:29 · 313 阅读 · 0 评论 -
(十八)Qt中的输入组件
Qt中的输入组件一共有十三种,分别是下拉列表框QComboBox、字体组合框QFontComboBox、行编辑框QLineEdit、多行富文本编辑框QTextEdit、多行文本编辑框QPlainTextEdit、整数旋转框QSpinBox、小数旋转框QDoubleSpinBox、时间编辑框QTimeEdit、日期编辑框QDateEdit、日期时间编辑框QDateTimeEdit、表盘QDial、滚原创 2017-02-10 00:04:09 · 2338 阅读 · 1 评论 -
(十七)QDockWidget详解
转自:http://blog.csdn.net/chenlong12580/article/details/9051847作者:chenlong12580 QDockWidget类详解【详细描述】QDockWidget类提供了一个特殊的窗口部件,它可以是被锁在QMainWindow窗口内部或者是作为顶级窗口悬浮在桌面上。QDockWidget类提供了dock widget的转载 2017-02-09 00:25:11 · 12605 阅读 · 1 评论 -
Qt5 模块简介
转自:http://blog.chinaunix.net/uid-24219701-id-4042173.htmlQt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改。Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中。Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化。本节主要对 Qt 5 的模块进行一个简单的介绍,以便以后大家需要哪些功转载 2017-01-15 23:52:12 · 459 阅读 · 0 评论 -
(五)Qt中的字符串类
Qt是一种C++GUI程序开发框架,因此可以使用C++提供的字符串(1、C风格字符串:以”\0”结尾的字符数组2、字符串类String)也可以使用Qt自己的字符串类QString 使用QString类的好处:采用16位Unicode值使用隐式共享技术来节省内存和避免不必要的数据拷贝跨平台兼容性隐式共享:http://blog.csdn.net/seanyxie/articl原创 2017-02-06 21:35:56 · 1241 阅读 · 0 评论 -
(十三)QListWidget、QListWidgetItem、堆栈窗体QStackedWidget
先看一篇博客:QListWidget和QListWidgetItem的简单使用转自: http://blog.csdn.net/fjb2080/article/details/4922490QListWidget可以显示一个清单,清单中的每个项目是QListWidgetItem的一个实例,每个项目可以通过QListWidgetItem来操作。可以通过QListWidge转载 2017-02-07 07:54:32 · 938 阅读 · 0 评论 -
(二十七)Qt容器之关联容器
Qt中关联容器(容器存储的是对)有:QMap(skip-list-based字典)、QMultiMap、QHash(哈希表)、QMultiHash、QSet 关联容器的引入:首先,我们看看数组的概念。数组可以看成是一种形式的键-值对,它的Key只能是int,而值的类型是Object,也就是任意类型(注意,这里我们只是说数组可以是任意类型,这个Object并不必须是一个对象)。现在我们扩原创 2017-02-15 00:13:42 · 769 阅读 · 0 评论 -
(二)命令行与QtCreator
Qt的编译方式之命令行编译条件:Qt源代码文件步骤:启动Qt命令行Command prompt进入源代码文件所在目录输入命令 (1)qmake–project 根据源码生成工程文件(.pro) (2)qmake 根据工程文件生成makefile文件 (3)make原创 2017-02-06 21:27:16 · 1435 阅读 · 0 评论 -
(一)GUI程序原理分析
命令行应用程序:主要基于顺序执行结构、以得到执行结果为目的、在执行过程中不需要与用户进行任何形式的交互、的应用程序,程序本身有着固定的开始固定的结束,程序一旦编译完成其运行结果几乎得以确定命令行程序运行模式:从函数入口开始,执行完主函数结束 使用范围:单任务场合无交互或简单交互场合服务器应用场合(将计算机资源尽可能的用于提供实际的服务)要求效率场合原创 2017-02-06 21:26:42 · 7924 阅读 · 0 评论 -
Qt学习笔记-----Model/View架构之自定义Model
作者:一个程序渣渣的小后院 地址:http://blog.csdn.net/sinat_35261315/article/details/54849486Model/View Framework中提供了模型model的抽象基类QAbstractItemModel, 如果需要自定义模型就需要继承这个类并且实现一些必要的函数。 此外,Qt中又提供了QAbstractTableModel转载 2017-03-12 20:12:40 · 930 阅读 · 0 评论