
Qt基础
Qt的基础用法
Shijia Yin
这个作者很懒,什么都没留下…
展开
-
Qt之QThread基本用法
简述多线程与多进程是现代操作系统中非常重要的两个概念,多进程强调分工,多线程强调合作,本文只谈多线程。多线程有硬件多线程和软件多线程之分,下面只谈软件多线程。多线程的能力一般是由操作系统(如Windows、Linux)提供,不同的操作系统在多线程的实现上是不同的,而且呈现出来的接口也是不统一的。很多程序开发框架都提供了独立于操作系统平台的多线程接口。Qt的QThread提供了一个独立于平台的方法管理多线程。一个QThread对象管理着一个线程。QThread通过执行run()开始。默认情况下,run原创 2020-06-06 16:49:24 · 6275 阅读 · 0 评论 -
Qt之QDir
简述利用QDir,我们可以获取目录结构和它们的内容。QDir被用来操作路径,并获取和该路径有关的信息。QDir也可以被用来处理Qt的资源系统。Qt使用"/“作为全局目录分隔符。如果你总是用”/"作为目录分隔符来表示一个路径,Qt将会把你给的路径转换成本地操作系统所对应的路径形式。QDir既可以使用相对路径,也可以使用绝对路径。绝对路径的例子如下: QDir("/home/user/D...原创 2020-04-11 17:50:41 · 2337 阅读 · 1 评论 -
Qt之QFileDialog简单用法
简述QFileDialog提供了一个对话框用于选择文件或目录。QFileDialog让用户可以遍历文件系统目录来选择文件或目录。使用创建一个QFileDialog最简单的方式是使用静态函数。如下所示:fileName = QFileDialog::getOpenFileName(this, tr("选择一张图片"), "C:/Users/jiage/Desktop", tr("Image...原创 2020-04-10 14:54:42 · 20973 阅读 · 0 评论 -
Qt之QSlider圆形滑柄样式
简述QSlider的滑柄样式设计遵循box model,但是在设计的过程中,我发现,边界的宽度变化会对滑柄高度造成挤压,这种挤压使得滑柄样式设计需要一些特殊处理。下面以圆形滑柄样式设计来介绍这种挤压的处理方法。挤压通常border的变化不会对contents造成影响,以QPushButton为例,如下所示:但是在QSlider的handle中却会出现如下情况contents的...原创 2020-04-06 22:51:58 · 2364 阅读 · 0 评论 -
Qt之可视化QSS生成器(初探)
简述QSS是Qt的样式表,类似于CSS,目前主要支持CSS2。写代码调样式非常不直观,因此需要一个所见即所得的可视化样式生成器,网上有很多CSS样式生成器,最适合网页开发人员的10款CSS代码生成器里面介绍了一些常用的CSS样式生成器,但是CSS和QSS毕竟不完全一样,所以生成的代码需要修改,这些修改的工作量也是不小的。Qt大神刘典武先生写了一个皮肤生成器,该生成器可以快速地生成整套皮肤,着实...原创 2020-04-02 23:18:58 · 4279 阅读 · 1 评论 -
Qt之QGraphicsDropShadowEffect
简述QGraphicsDropShadowEffect可以为Qt中的控件提供阴影效果。使用setColor()函数来设置阴影颜色,使用setOffset来设置阴影偏移,使用setBlurRadius()来设置阴影模糊半径。默认的阴影是半透明黑灰色,1px模糊半径,向右下角8px偏移。使用效果源码QPushButton pushBtn = new QPushButton("tes...原创 2020-04-02 13:13:59 · 4837 阅读 · 0 评论 -
Qt之QColorDialog
简述QColorDialog提供了一个对话框用于选择颜色。静态函数getColor()可以用于展示出对话框允许用户指定一个颜色。通过指定额外的选项参数ShowAlphaChannel,可以让用户在选择颜色的同时选择透明度。通过点击"Pick Screen Color",用户可以拾取程序窗口内的颜色。使用效果源码构造函数 colorDialog = new QColorD...原创 2020-03-31 14:28:39 · 5151 阅读 · 2 评论 -
Qt之应用部署(Windows)
英文可以的同学建议直接看Qt for Windows - Deployment简述本文介绍了Qt在Windows上的部署过程。Windows 部署工具windeployqt是一个用于将Qt部署到Windows的小工具。这个工具可以在 QTDIR/bin/windeployqt下面找到。它需要在命令行环境下使用。windeployqt以一个.exe或者一个含有.exe的文件夹作为参数。...原创 2020-03-28 17:08:54 · 4369 阅读 · 0 评论 -
Qt之模型-视图编程(自定义模型)
简述在构建一个模型类之前,需要先考虑清楚这个模型面对的是一个怎样的数据源,只有清楚数据源的特性,才能知道要利用哪个基类,实现哪些接口。比如,如果数据结构可以被表示为列表或者表格,我们可以通过子类化QAbstractListModel或者QAbstractTableModel来实现。如果底层数据结构是层级结构,我们就需要考虑子类化QAbstractItemModel。这篇文章介绍的例子是实现一个...原创 2020-03-25 21:18:20 · 791 阅读 · 0 评论 -
Qt之模型-视图编程(处理项目视图的选择)
简述项目视图类使用选择模型提供一种对选择行为的通用描述。项目的选择状态信息被存储在QItemSelectionModel类的实例中。QItemSelectionModel维护着选择实体(QItemSelection),选择实体由选择范围构成,一个选择范围只需要起点(start index)和终点(end index)便可唯一确定。非连续的选择选择范围则需要多个选择范围来描述。提示: 当进行...原创 2020-03-25 14:38:24 · 732 阅读 · 0 评论 -
Qt之模型-视图编程(代理类)
简述模型视图架构提供了代理类用来负责用户的交互。简单的代理类可以子类化QItemDelegate。如果QItemDelegate无法满足要求,则应当考虑QAbstractItemDelegate。代理所用的编辑器可以使用现成的输入控件,也可以直接处理events。使用现成的代理类Qt中的标准视图使用QItemDelegate来提供编辑功能。所有的标准角色都由标准视图所采用的默认代理来处...原创 2020-03-24 19:44:41 · 2413 阅读 · 0 评论 -
Qt之模型-视图编程(视图类)
简述在模型/视图框架中,视图展示数据的方式与模型表示数据的方式可能有所不同。QAbstractItemModel与QAbstractItemView所提供的标准化接口让获取数据与表示数据表示相分离。视图可以自己渲染数据项目的显示,也可以使用代理来一起处理显示与编辑。除了数据项目的显示,视图还负责数据项目之间的导航。视图实现了诸如文本按钮和拖拽等基本用户接口特性。视图通过使用selectio...原创 2020-03-24 17:08:03 · 770 阅读 · 0 评论 -
Qt之模型-视图编程(模型类)
简述在正式学习如何处理选择的项目之前,认识模型/视图框架中的一些基础概念对后续的学习将会很有帮助。基本概念在模型/视图框架中,模型为视图和代理获取数据提供了标准的接口。在Qt中,这个标准接口由QAbstractItemModel类定义。无论数据项目在底层数据结构中是如何存储的,QAbstractItemModel都会以包含项目表的层级结构来表示这些数据。 视图会按照这种接口来获取模型中的数据...原创 2020-03-24 14:07:37 · 418 阅读 · 0 评论 -
Qt之模型-视图编程(使用模型-视图框架)
简述下面的内容介绍了如何在Qt中使用模型/视图框架。Qt中包含的两个模型Qt提供的两个标准模型是QStandardIteModel和QFileSystemModel。QStandardItemModel是一个多功能模型,可用于表示列表,表和树视图所需的各种不同数据结构。该模型还保存数据项。 QFileSystemModel是用于维护有关目录内容的信息的模型。因此,它不会存储项目数据,只是简单...原创 2020-03-24 09:11:21 · 656 阅读 · 0 评论 -
Qt之模型-视图编程(模型-视图编程概览)
简述Qt包含一组项目视图类,这些项目视图类使用模型/视图体系结构来管理数据与其呈现给用户的方式之间的关系。此体系结构引入的功能分离为开发人员提供了更大的灵活性,可以自定义项目的表示形式,并提供标准的模型接口,以允许将各种数据源与现有项目视图一起使用。模型视图架构模型视图控制器(MVC)是一种源自Smalltalk的设计模式,通常在构建用户界面时使用。在《Design Patterns》中,G...原创 2020-03-23 19:09:15 · 605 阅读 · 0 评论 -
Qt之容器控件(QDockWidget)
简述QDockWidget类提供了一个小部件,它可以停靠在QMainWindow内,也可以作为桌面上的顶层窗口浮动。功能详述QDockWidget提供了铆接(停靠)控件的概念,也叫做工具窗口。铆接窗口是QMainWindow中心控件的辅助窗口,停放在QMainWindow的铆接区域,铆接区域如下所示:铆接部件可以在铆接区域移动,或者浮动。QDockWidget提供了API来控制铆接部...原创 2020-03-22 17:10:41 · 1847 阅读 · 0 评论 -
Qt之容器控件(QMdiArea)
简述QMdiArea(Multiple Document Interface Area)提供了一个可以同时显示多个文档窗口的区域。本质上来说,QMdiArea就像是多文档窗口的窗口管理器。例如,它将它所管理的窗口绘制在它上面,并且以级联或者平铺的方式放置这些窗口。通常情况下,QMdiArea用作QMainWindow的中心控件,以此来创建一个MDI应用程序。但是,它也可以被放置在任何布局类中。...原创 2020-03-22 14:08:59 · 21038 阅读 · 0 评论 -
Qt之容器控件(QStackedWidget)
简述QStackedWidget提供了一个控件栈,在这个栈中,一次只能显示一个控件。QStackedWidget可以提供与QTabWidget类似的用户接口。QStackedWidget没有提供内建方法用于页面之间的切换。页面的切换通常是通过QComboBox或者QListWidget来触发。其它接口与QTabWidget类似,参见Qt之容器控件(QTabWidget)使用效果...原创 2020-03-21 20:09:47 · 11449 阅读 · 0 评论 -
Qt之容器控件(QTabWidget)
简述QTabWidget类提供了一堆选项卡式窗口小部件。功能详述选项卡小部件提供了一个选项卡栏(请参阅QTabBar)和一个“页面区域”,该页面区域用于显示与每个选项卡相关的页面。默认情况下,选项卡栏显示在页面区域上方,但是可以使用不同的配置(请参见TabPosition)。每个选项卡都与一个不同的窗口小部件(称为页面)相关联。页面区域中仅显示当前页面。其他所有页面均被隐藏。用户可以通过单击...原创 2020-03-21 15:28:39 · 34275 阅读 · 6 评论 -
Qt之容器控件(QToolBox)
简述QToolBox类提供一列带标签的窗口小部件项目。功能详述工具箱是一个小部件,在这个小部件显示着一列带标签的选项卡。其中,当前选项卡下显示的当前项目。每个项目都有一个itemText(),一个可选的itemIcon(),一个可选的itemToolTip()和一个widget()。可以使用setItemText(),setItemIcon()和setItemToolTip()更改项目的属...原创 2020-03-21 11:13:28 · 6698 阅读 · 0 评论 -
Qt之容器控件(QStrollArea)
简述QScrollArea类提供了一个窗口小部件的滚动视图。滚动区域用于显示框架内子窗口小部件的内容。如果窗口小部件超出框架的大小,则视图可以提供滚动条,以便可以查看子窗口小部件的整个区域。子窗口小部件必须使用setWidget()指定。QScrollArea中的很多功能继承自QAbstractScrollArea。功能详述滚动条的外观取决于当前设置的滚动条策略。您可以使用QAbstra...原创 2020-03-20 22:14:14 · 1230 阅读 · 0 评论 -
Qt之容器控件(QGroupBox)
简述QGroupBox小部件提供带有标题的组框框架。一个组框提供一个框架,一个标题,一个快捷键,并在其内部显示其他各种小部件。键盘快捷键将键盘焦点移到组框的子窗口小部件之一。功能描述QGroupBox还允许您设置标题(通常在构造函数中设置)和标题的对齐方式。组框可以被选中。可选中组框中的子窗口小部件是否启用,取决于是否选中了该组框。您可以通过启用flat属性来最小化组框的空间消耗。在大多...原创 2020-03-20 13:01:44 · 27013 阅读 · 1 评论 -
Qt之显示控件(QCalendarWidget)
简述QCalendarWidget类提供了基于月份的日历小部件,允许用户选择日期。该小部件已使用系统当前的月份和年份进行了初始化,同时QCalendarWidget提供了几个公共插槽以更改显示的年份和月份。功能详述默认情况下,选择今天的日期,并且用户可以使用鼠标和键盘选择日期。可以使用selectedDate()函数检索当前选择的日期。通过设置minimumDate和maximumDate...原创 2020-03-19 19:35:45 · 2313 阅读 · 0 评论 -
Qt之QDate
简述QDate类提供日期相关的功能。QDate可以从系统时钟读取当前日期。它提供了比较日期和操作日期的功能。例如,可以在日期上加上和减去几天,几个月和几年。功能详述通常显式地给出年、月、日来创建QDate对象。请注意,QDate可以将显示的两位数字年份解释为0至99年,而不会添加任何偏移量。也可以使用静态函数currentDate()构造QDate,该函数创建一个包含系统时钟日期的QDat...原创 2020-03-19 15:13:46 · 6529 阅读 · 0 评论 -
Qt之显示控件(QLCDNumber)
简述QLCDNumber控件将会把数字以LCD的样式显示出来。功能描述它可以显示几乎任何大小的数字。它可以显示十进制,十六进制,八进制或二进制数字。使用display()插槽很容易连接到数据源,该插槽重载了五个参数类型中的任何一个。可以显示这些数字和其他符号:0 / O,1、2、3、4、5 / S,6、7、8、9 / g,减号,小数点,A,B,C,D,E,F,h,H,L,o,P,r,u,...原创 2020-03-18 22:57:14 · 14215 阅读 · 1 评论 -
Qt之显示控件(QProgressBar)
简述QProgressBar控件提供水平或垂直进度条。进度条用于向用户指示操作的进度,并向他们保证应用程序仍在运行。使用效果源码 QProgressBar *progressBar = new QProgressBar; progressBar->setOrientation(Qt::Horizontal); progressBar->setTe...原创 2020-03-18 17:36:27 · 3519 阅读 · 0 评论 -
Qt之显示控件(QLabel)
简述QLabel用于显示文本或图像。没有提供用户交互功能。标签的视觉外观可以通过各种方式进行配置,并且可以用于为另一个窗口小部件指定焦点助记键。功能描述QLabel可以包含以下任何内容类型:内容设置纯文本传递一个QString给setText()富文本传递一个包含富本文的QString给setText()位图传递一张QPixmap给setPixmap...原创 2020-03-18 13:06:11 · 5947 阅读 · 3 评论 -
Qt之输入控件(QTextEdit)
简述QTextEdit类提供了一个控件,用于编辑和显示纯文本和富文本。QTextEdit是一种高级WYSIWYG查看器/编辑器,支持使用HTML样式标记的富文本格式。它经过优化,可处理大型文档并快速响应用户输入。如果只需要显示一小段富文本,请使用QLabel。QTextEdit可以显示图像,列表和表格。功能描述QTextEdit适用于段落和字符。段落是经过格式化的字符串,将其自动换行以适...原创 2020-03-17 18:25:09 · 11833 阅读 · 1 评论 -
Qt之输入控件(QDateTimeEdit)
简述QDateTimeEdit类提供了一个用于编辑日期和时间的控件。QDateTimeEdit允许用户通过键盘或箭头键来增加和减少日期或时间值来编辑日期。箭头键可用于在QDateTimeEdit框中的一个区域移动。日期和时间按照设置的格式显示,设置方法请参见setDisplayFormat()。基本用法效果源码 QDateTimeEdit *dateTimeEdit = n...原创 2020-03-16 18:00:46 · 3639 阅读 · 0 评论 -
Qt之输入控件(QSlider)
简述QSlider继承自QAbstractSliderQSlider提供水平或垂直的滑块。滑块是用于控制有界值的经典小部件。它使用户可以沿水平或垂直凹槽移动滑动手柄,并将手柄的位置转换为合法范围内的整数值。功能详述QSlider仅有很少的专属功能。大多数功能都是继承自QAbstractSlider。最有用的函数是setValue(),可将滑块直接设置为某个值。 triggerAction...原创 2020-03-16 15:34:11 · 915 阅读 · 0 评论 -
Qt之输入控件(QAbstractSlider)
简述QAbstractSlider类提供一个范围内的整数值。该类被设计为QScrollBar,QSlider和QDial等小部件的通用超类。常用接口属性名称描述valueQAbstractSlider维护的有界整数。minimum最小值maximum最大值singleStep步长pageStep页长tracking滑块跟踪属性...原创 2020-03-16 15:11:52 · 517 阅读 · 0 评论 -
Qt值输入控件(QSpinBox和QDoubleSpinBox)
功能描述QSpinBox旨在处理整数和离散值集(例如月份名称);使用QDoubleSpinBox作为浮点值。QSpinBox允许用户通过单击上/下按钮或按键盘上的上/下按钮来选择一个值,以增加/减少当前显示的值。用户也可以手动输入值。旋转框支持整数值,但可以扩展为使用带有validate(),textFromValue()和valueFromText()的不同字符串。每次值更改时,QSpi...原创 2020-03-16 12:17:41 · 26283 阅读 · 2 评论 -
Qt之模仿QQ登录界面
简述模仿QQ登录界面。主要涉及布局管理器、输入控件以及QSS样式的使用。只实现了基本的外观,并不涉及到内部功能实现。整个界面分为两大部分,上面的欢迎界面(upPanel)和下面的信息输入界面(downPanel)。每一个部分都用一个单独的类来实现。这两个类都继承自QWidget。效果核心代码核心代码主要涉及以下几个方面的内容实现无边框窗体实现窗口的拖动实现QQ工具栏实...原创 2020-03-15 23:28:47 · 1429 阅读 · 0 评论 -
Qt之输入控件(QComboBox)
简述QComboBox控件是按钮和弹出列表的组合。QComboBox提供了一种以占用最少屏幕空间的方式向用户显示选项列表的方法。详细描述组合框是显示当前项目的选择类控件,并且可以弹出可选项目的列表。组合框可以包含像素图和字符串;insertItem()和setItemText()函数在QComboBox中被适当地重载了。对于可编辑的组合框,提供了函数clearEditText(),以清除...原创 2020-03-14 21:19:02 · 3146 阅读 · 0 评论 -
Qt之输入控件(QLineEdit)
简述QLineEdit是一个单行文本输入框,带有撤销、剪切、粘贴以及拖拽等功能。通过改变输入框的echoMode(),同时也可以设置为一个“只写”字段,用于输入密码等。文本的长度可以被限制为maxLength(),可以使用一个validator()或inputMask()来任意限制文本。当在同一个输入框中切换验证器和输入掩码的时候,最好是清除验证器或输入掩码,防止不确定的行为。用法下面用...原创 2020-03-14 17:50:42 · 8058 阅读 · 0 评论 -
Qt之按钮(QCheckBox)
简述QCheckBox是一个选项按钮,可以打开(选中)或关闭(取消选中)。复选框中按钮的启用与禁止不会对其它按钮造成任何影响。虽然QButtonGroup可以用于对检查按钮进行逻辑分组,从而允许排他性复选框。但是,QButtonGroup不提供任何视觉表示,不太直观。QCheckBox有一个独有的功能,那就是支持三态选择。使用效果在这个例子中,我们设置一号女嘉宾为三态,并且当一号...原创 2020-03-13 13:58:07 · 1240 阅读 · 0 评论 -
Qt之按钮(QRadioButton)
简述QRadioButton小部件提供带有文本标签的单选按钮。QRadioButton是一个选项按钮,可以打开(选中)或关闭(取消选中)。单选按钮通常向用户显示“多个”选项。在一组单选按钮中,一次只能选中一个单选按钮。如果用户选择另一个按钮,则先前选择的按钮将关闭。默认情况下,单选按钮是自动互斥的。如果启用了自动互斥,则属于同一父控件的单选按钮的行为就好像它们属于同一按钮组的一样。如果需要属...原创 2020-03-13 13:25:03 · 1749 阅读 · 0 评论 -
Qt之按钮(QToolButton)
简述QToolButton类让我们可以快速地实现命令和选项按钮,它通常用在QToolBar中。相比于普通的命令按钮(QPushButton),工具按钮通常不显示文本,只显示图标。工具按钮通常是在QToolBar::addAction方法被调用的时候被创建。当然,也可以用其它控件的创建方式来创建QToolButton。QToolButton的一种经典用法是选择工具。例如,绘图程序中的“笔”工...原创 2020-03-13 10:24:00 · 15384 阅读 · 2 评论 -
Qt之按钮(QPushButton)
简述QPushButton控件提供了一个命令按钮。按钮或者说命令按钮可能是任何图形用户界面中最常用的窗口控件。按下(单击)按钮以命令计算机执行某些操作或响应请求。典型的按钮是“确定”,“应用”,“取消”,“关闭”,“是”,“否”和“帮助”。命令按钮是矩形的,通常显示描述其操作的文本标签。可以通过在文本中的首选字符前面加上“&”符号来指定快捷键。还可以将QPushButton与QMenu组合...原创 2020-03-12 17:30:08 · 1208 阅读 · 0 评论 -
Qt之按钮(QAbstractButton)
简述QAbstractButton是按钮控件的抽象基类,提供了按钮所共有的功能。这个类实现了一个抽象的按钮。对这个按钮进行子类化可以处理用户行为,以及指定按钮如何绘制。QAbstractButton提供了点击和勾选按钮。QRadioButton和QCheckBox类只提供了勾选按钮,QPushButton和QToolButton提供了点击按钮,如果需要的话,它们还可以提供切换行为。任何按钮...原创 2020-03-12 11:22:06 · 1824 阅读 · 0 评论