互联网挖掘者
简述 QHostInfo 类为主机名查找提供了静态函数。 QHostInfo 利用操作系统提供的查询机制来查询与特定主机名相关联的主机的 IP 地址,或者与一个IP地址相关联的主机名。这个类提供了两个静态的便利函数:一个以异步方式工作,一旦找到主机就发射一个信号;另一个以阻塞方式工作,并且最终返回一个 QHostInfo 对象。 要使用异步方式查询主机的 IP 地址,调
简述 Qt中包含了网络模块-network,我们可以很容易的进行各种网络编程和数据传输,关于network的类很多,其中包含:支持DNS、HTTP、TCP/UDP等众多高级类,可以参考助手。 下面我们先看一个简单地示例:Qt显示一个网络图片。 简述 效果 源码 处理方式 效果 源码 创建按钮及显示图像的标签,连接信号槽。 m_pB
简述 前面分享了QTableView中如何添加复选框。本节主要介绍QTableView中的表头-QHeaderView添加复选框的功能,下面以水平表头为例,垂直表头类似! 简述 效果 QHeaderView 源码 接口说明 QAbstractTableModel 源码 接口说明 使用 效果 QHeaderView 源码
简述 上节分享了使用自定义模型QAbstractTableModel来实现复选框。下面我们来介绍另外一种方式: 自定义委托-QAbstractItemDelegate。 简述 效果 QAbstractTableModel 源码 接口说明 QStyledItemDelegate 源码 接口说明 样式 使用 效果 QAbstrac
简述 使用QTableView,经常会遇到复选框,要实现一个好的复选框,除了常规的功能外,还应注意以下几点: 三态:不选/半选/全选 自定义风格(样式) 下面我们介绍一下常见的实现方式: 编辑委托。 方式:利用委托重载createEditor(),激活QCheckBox。 特点:必须双击/选中,才能显示CheckBox控件。一般不满足实际中的直接显示的需要。
简述 QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库。适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它工具打开。 Qt中提供了qCompress/qUncompress来进行文件的压缩与解压,但存在两个问题: 无法很好地压缩/解压缩文件夹。 只能将一个文件压缩为某种格式,压缩后的
简述 发布程序的时候,我们往往会遇到这种情况: 只需要用户运行一个实例进程 用户可以同时运行多个实例进程 一个实例进程的软件有很多,例如:360、酷狗… 多个实例进程的软件也很多,例如:Visual Studio、Qt Ctretor、QQ… 下面我们来介绍下如何实现一个实例进程。 简述 QSharedMemory QLocalServer QtSing
简述 可以通过Qt提供的IPC使用TCP/IP,使用QtNetwork模块即可实现,TCP/IP在实现应用程序和进程内部通信或与远程进程间的通信方面非常有用。 QtNetwork模块提供的类能够创建基于TCP/IP的客户端与服务端应用程序。为实现底层的网络访问,可以使用QTcpSocket、QTcpServer和QUdpSocket,并提供底层网络类。还提供了使用常规协议
简述 QProcess可以在应用程序内部与其它进程通信,或启动其它应用程序。与在终端机之类的命令输入窗口上使用名称和参数是一样的,可以使用QProcess提供的函数start()启动进程。可以注册QStringList处理进程后的参数。 简述 命令行参数启动 说明 实现 命令行读取 说明 实现 更多参考 命令行参数启动 说明 进程
简述 上一节中,我们分享下如何利用Windows消息机制来进行不同进程间的通信。但是有很多局限性,比如:不能跨平台,而且必须两个进程同时存在才可以,要么进程A发了消息谁接收呢? 下面我们来分享另外一种跨平台的进行间通信的方式-Shared Memory(共享内存)。 Qt提供的基于共享内存的IPC有QSharedMemory类和QSystemSemaphore类,QSh
简述 其实今天说的内容不仅仅局限于Qt,在很多其它语言或者框架中也适用,那就是 - 用可视化工具or文本编辑器?拖or不拖? 如果有人问我喜欢脱or不脱?我会毫不犹豫地说不脱,因为我比较矜持O(∩_∩)O哈哈~! 其实刚接触Qt,我就习惯了手写代码,不喜欢用Designer。不喜欢并不代表不会,其实很熟练 - 因为很熟,所以注定是朋友O(∩_∩)O~。就和我一直很喜欢用
简述 网页右下角上经常会出现一些提示性的信息,桌面软件中也比较常见,类似360新闻、QQ消息提示一样! 这种功能用动画实现起来很简单,这节我们暂时使用定时器来实现,后面章节会对动画框架进行详细讲解。 下面我们来实现一个右下角冒泡的功能。 简述 效果 实现原理 连接信号与槽 实现 效果 实现原理 显示 定时器启动,右下角缓慢弹出,逐渐改变位置
简述 通过上一节的了解,我们可以看出进程通信的方式很多,今天分享下如何利用Windows消息机制来进行不同进程间的通信。 简述 效果 发送消息 自定义类型与接收窗体 发送数据 接收消息 设置标题 重写nativeEvent 更多参考 效果 发送消息 自定义类型与接收窗体 包含所需库,定义发送的自定义类型、接收消息的窗体标
简述 进程间通信,就是在不同进程之间传播或交换信息。那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库
简述 通过前几节的自定义窗体的学习,我们可以很容易的写出一套属于自己风格的界面框架,通用于各种窗体,比如:QWidget、QDialog、QMainWindow。 大多数窗体的实现都是采用控件堆积来完成的,只要思路清晰,再复杂的界面实现起来都游刃有余。下面我来列举一个由QMessageBox扩展的提示框-根据其源码实现思路来实现! 简述 效果 自定义提示框 实现
简述 通过上一节内容,我们实现了窗体的缩放,功能很不错,但是很遗憾-不支持跨平台!如果对于多平台来说,这是一个硬伤,所以,我们急需要一个能够支持跨平台的实现方案。 在网上看到过很多不同的实现方式,多多少少会存在一些问题-要么融合度太高、要么不能很好地进行移动、缩放。基于前人的分享与总结,最后,我花了很长时间来完善。独乐乐不如众乐乐,既然纯开源-那就全部分享出来。
简述 通过前两节内容,我们实现了自定义窗体的移动,以及自定义标题栏-用来显示窗体的图标、标题,以及控制窗体最小化、最大化、关闭。 在这之后,我们还缺少窗体的缩放-当鼠标移动到窗体的边框-左、上、右、下、左上角、左下角、右上角、右下角时候,鼠标变为相应的样式,并且窗体可以随着鼠标拖动而进行放大、缩小。 简述 效果 窗体缩放 实现 接口说明 效果
简述 通过上节内容,我们实现了自定义窗体的移动,但是我们缺少一个标题栏来显示窗体的图标、标题,以及控制窗体最小化、最大化、关闭的按钮。 自定义标题栏后,所有的控件我们都可以定制,比如:在标题栏中添加换肤、设置按钮以及其他控件。 简述 效果 自定义标题栏 实现 接口说明 使用方式 效果 自定义标题栏 实现 title_bar.h #if
简述 UI设计是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性、有品位,还要让软件的操作变得舒适简单、自由,充分体现软件的定位和特点。 爱美之心人皆有之。其实软件界面就像工业造型一样,是产品的重要卖点。一个产品拥有美观的界面会给人带来舒适的视觉享受,拉近人与产品的距离,是建立在科学性之上的艺术设计。 检验一个界面的标准-既不是某个项
简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口 - QWidget、QDialog、QMainWindow。 QWidget继承于QObject和QPaintDevice,QDialog和QMainWindow则继承于QWidget,QDialog、QMainWindow两者之间没有直接关系。淘气的小盆友又不高兴了,它俩分明同属于一个父亲,那就是兄弟姊妹关系
简述 一般情况下,我们在开发软件过程中,都会缓存一些信息到本地,可以使用轻量级数据库sqlite,也可以操作注册表、读写配置文件。 关于QSettings的使用前面已经介绍过了,比较详细,见“更多参考”,下面介绍下QSettings常用功能-读写注册表、配置文件。 简述 优点 读写注册表 一般存储 一般读取 分目录存储 替换applicationName 分
简介 QSettings类提供了持久的跨平台应用程序设置。 用户通常期望应用程序记住它的设置(窗口大小、位置等)所有会话。这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中。在Unix系统中,在缺乏标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件。 QSettings围绕这些抽象技术,使我们能够以便携的方式保存和恢复应用程序设
简述 QProcess可以用来启动外部程序,并与它们交互。 要启动一个进程,通过调用start()来进行,参数包含程序的名称和命令行参数,参数作为一个QStringList的单个字符串。 另外,也可以使用setProgram()和setArguments()来运行,然后调用start()或open()。 简述 接口 示例 cmd 启动cmd cmd带参数
简述 QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色。 Qt中窗口背景的设置,下面介绍三种方法。 使用QPalette 使用Style Sheet 绘图事件 一般我不用QSS设置窗口背景,也不建议使用。(这里是对于窗口而,如果是子部件当然可以)。因为窗口使用QSS设置背景之后,若子部件不使用同样的方式来设置,默认则会继承
简述 关于搜索框,大家都经常接触。例如:浏览器搜索、Windows资源管理器搜索等。 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定。 方案一:调用QLineEdit现有接口 void addAction(QAction * action, ActionPosition position) 在QLineEdit的前/后添加部件,Actio
简述 Qt中Esc键会在一些控件中默认的进行一些事件的触发,比如:QDialog,按下Esc键窗口消失。大多数情况下,我们不需要这么做,那么就需要对默认事件进行屏蔽。 简述 源码分析 事件过滤器 事件重写 重写reject 源码分析 通过查看QDialog的源码,我们很容易会发现keyPressEvent事件中,当按下Esc键时,会默认执行reject()
简介 Qt的窗口部件按用户的习惯来处理键盘焦点。也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件。 焦点获取方式比较多,例如:鼠标点击、Tab键切换、快捷键、鼠标滚轮等。 习惯性的,我们经常会使用Tab键来控制焦点顺序,比如:用户注册时,个人信息输入框焦点的切换、执行按钮焦点的切换等。 在添加部件之后,默认情况下,Tab键也是可以切换焦点的,
简介 今天分享的内容有些意思-如何重启一个应用程序。其实,有时候这是一个很重要的功能点,而且很人性化、易用性很好。 例如:切换用户。当某个用户登录成功之后,需要切换到其它账号,那么这时,你就知道它的重要性了。 简介 效果 qApp退出代码重启 定义退出代码 重启操作 修改应用程序循环 QProcess重启 源码下载 效果 qApp退
简述 在做用户登录、修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同,例如:不能选中、复制、粘贴、无右键菜单等功能,当然设置密码不可见是必须的! 下面介绍两种方式来实现相同的效果。 简述 效果 基础部分 事件过滤器 接口说明 实现方式 事件重写 源码下载 效果 基础部分 //设置无右键菜单 setContext
简介 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮、QLineEdit、QSpinBox、QScrollBar中的右键菜单等。通常情况下,我们软件都不会是纯英文的,那么如何处理这些问题呢?其实这也属于国际化的一部分。 下面,以中英文切换为例来为大家分享,其它语言切换类似。 简介 查找翻译文件 加载翻译文件 切换语言
简介 Qt国际化属于Qt高级中的一部分,本想着放到后面来说,上节刚好介绍了Qt Linguist,趁热打铁就一起了解下。 对于绝大多数的应用程序,在刚启动时,需要加载默认的语言(或最后一次设置的语言)。在使用的过程中,我们也不需要重启应用程序而实现语言的动态切换。这样的话,易用性就非常好了。 简介 多语言切换 源码分析 添加翻译源 翻译 发布翻译 加载翻译文件 源
简介 Qt提供了一款优秀的支持Qt C++和Qt Quick应用程序的翻译工具。发布者、翻译者和开发者可以使用这款工具来完成他们的任务。 发布者:承担了全面发布应用程序的责任。通常,他们协调开发者和翻译者的工作,可以使用lupdate工具同步源代码,进行翻译,使用lrelease同步工具为发布应用程序创建运行时使用的翻译文件。 翻译者:可以使用Qt Linguist工具
简介 Qt Creator是使用Qt开发的IDE。Qt支持Windows、Linux/Unix、Mac OS X、Android、BlackBerry、QNX等多种平台,Qt Creator为不同平台提供了统一的开发环境。 Qt Creator集成了Qt Designer、Qt Assistant、Help等工具。因此,在开发过程中可以很快的通过Designer来设计界面
简述 HTML编辑器是指编辑制作HTML的工具,通过使用编辑器,我们可以自定义窗囗,编辑主题、索引,可选择添搜索页,无任何不自由。 简述 工具推荐 编辑运行 新建 HTML 文件 另存为 HTML 文件 在浏览器中运行 HTML 文件 工具推荐 可以使用专业的HTML编辑器来编辑HTML: Amaya(万维网联盟) Dreamweav
简述 前两节讲解了如何在Visual Studio和Qt Creator中搭建Qt开发环境,并分享了我们第一个小程序-Hello World。 下面分享如何使用命令行来编译Qt程序。当然,MSVC和MinGW的配置和编译过程相差无几。 简述 新建 打开命令行 生成 pro qmake nmake 运行 注意事项 新建 新建一个”HelloWorld.
简介 Qt Creator中提供了各种快捷键来加快开发进程。 如果需要查看或自定义快捷键,选择工具->选项->环境->键盘。快捷键按类别列出,可以在过滤器(Filter)处输入命令名称、标签名称或快捷键名称,来快速定位想要查找的快捷键。 以红颜色显示的快捷键与某些功能相关联。Qt Creator可以在当前上下文中执行该功能。如果几个功能用同一个
简述 上一节中介绍了如何进行Qt和Visual Studio的下载安装,随后演示了如何将Qt集成到Visual Studio中,并完成了我们第一个Qt小程序-Hello World。下面主要讲解如何利用Qt Creator来编写Qt程序。 简述 Hello World 配置环境 下载Windows Debugging 配置调试器 Hello Wor
简述 经常有人问我编写Qt程序时使用什么IDE,其实这个真的很难回答(各有所长),只能说看个人爱好了,因为我两个都用,而且两个都很喜欢(比较多情吧O(∩_∩)O~)! 下面将进行Qt Creator与Visual Studio比较,大家可以参考一下! Visual Studio + Qt:以下均以此代表Visual Studio集成Qt开发,也就是Qt插件集成到Visu
什么是Qt Qt是一个针对桌面、嵌入式、移动设备的一个跨平台的应用程序开发框架,支持的平台包括Linux、OS X、Windows、VxWorks、QNX、Android、iOS、BlackBerry(黑莓)、Sailfish OS(旗鱼操作系统)等。 Qt 1991年由Trolltech-奇趣科技(成立于1994年)开发,2008年,Trolltech被Nokia收购,
决心 今天,从当当网上买的书送到了,心情比较复杂。从小到大从没在网上买过书,而且之前书店买的大多也都是跟学习无关,而如今买的第一本书却是PS,想起来都感到惭愧。今年刚参加工作,至今为止一直都在做项目,平日上班比较忙,每周基本都加班,晚上也是9点之后回家,只因为知道自己是菜鸟、新手,只能靠时间来弥补自己能力和经验上的不足。加班累吗?从来没怎么想过,只希望以后的我会感谢现在拼命