【图形界面编程】
文章平均质量分 69
Mike江
A goal is not always meant to be reached, it often serves simply as something to aim at. ──Bruce Lee
目标不一定是需要达到的,目标往往只是用来帮助你瞄准方向。──李小龙
展开
-
Qt 处理XML 文档的三种方式简介——DOM、SAX、流处理
XML(eXtensible Markup Language)是一种通用的文本格式,也叫可扩展标记语言。被广泛运用于数据交换和数据存储(虽然近年来 JSON 盛行,大有取代 XML 的趋势,但是对于一些已有系统和架构,比如 WebService,由于历史原因,仍旧会继续使用 XML)。XML 由 World Wide Web Consortium(W3C)发布,作为 SHML(Standard Generalized Markup Language)的一种轻量级方言。XML 语法类似于 HTML,与后者的主原创 2015-07-05 00:25:35 · 1962 阅读 · 0 评论 -
QTableWidget的使用
QTableWidget是Qt程序中常用的显示数据表格的空间。QTableWidget只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的(也就是不需要数据源,将逐个单元格内的信息填好即可)。QTableWidgetItem用来表示表格中的一个单元格,整个表格都需要用逐个单元格构建起来。程序实现效果图如下: 实现代码如下://表头相关设置 //设置列数,原创 2017-04-27 23:52:32 · 3805 阅读 · 0 评论 -
C语言也能做界面:踏上GTK+学习之旅
00、背上行囊1——程序员学习之道01、背上行囊2——为什么要学习GTK02、背上行囊3——GUI概述03、背上行囊4——GTK简介04、背上行囊5——GTK环境搭建( Linux )05、背上行囊6——GTK环境搭建( windows )06、踏上旅途1——一个简单的空白窗口07、踏上旅途2——控件的添加08、踏上旅途3——布局容器之水平布局09、踏上旅途4——布局容器之垂直布局10、踏上旅途5...原创 2015-01-15 14:58:23 · 63178 阅读 · 8 评论 -
Go版GTK:常用事件—大小改变事件
当窗口初始化,被移动或拉伸时,会触发大小改变事件。事件标识: 事件标识 触发条件 “configure_event” 窗口大小改变时触发示例代码:package mainimport ( "fmt" "os" "github.com/mattn/go-gtk/gtk")func main() { gtk...原创 2018-02-08 20:19:23 · 5845 阅读 · 0 评论 -
Go版GTK:常用事件—键盘事件
事件标识: 事件标识 触发条件 “key-press-event” 键盘按下时触发 “key-release-event” 键盘抬起时触发示例代码:package mainimport ( "fmt" "os" "unsafe" "github.com/mattn/go-gtk/gdk" "g...原创 2018-02-08 11:40:22 · 7176 阅读 · 0 评论 -
Go版GTK:鼠标事件应用—窗口移动
创建窗口时,如果指定类型为弹出类型,即为无边框窗口,这时候,无法通过边框移动窗口,这时可以借助鼠标点击、移动事件实现窗口的移动。坐标说明: 移动坐标说明: 示例代码:package mainimport ( // "fmt" "os" "unsafe" "github.com/mattn/go-gtk/gdk" "github...原创 2018-02-07 20:57:03 · 6970 阅读 · 0 评论 -
Go版GTK:常用事件—鼠标事件
鼠标事件,可以理解为操作鼠标的动作。对于窗口而言,用户操作鼠标,窗口检测到鼠标的操作( 产生一个信号 ),然后去做相应处理( 调用其规定的回调函数 ),即为鼠标事件。窗口默认不捕获鼠标的操作,需要手动添加让其捕获: //添加鼠标按下事件 //BUTTON_PRESS_MASK: 鼠标按下,触发信号"button-press-event" //BUTTON_RELE...原创 2018-02-07 18:40:50 · 7461 阅读 · 0 评论 -
Go版GTK:常用控件—对话框
glade设计如下: 示例代码:package mainimport ( "fmt" "os" "github.com/mattn/go-gtk/gtk")func main() { gtk.Init(&os.Args) builder := gtk.NewBuilder() //新建builder b...原创 2018-02-07 13:05:49 · 7912 阅读 · 1 评论 -
Go版GTK:定时器
定时器在应用编程里用得很广,我们手机里的闹钟,幻灯片播放图片等应用都用到定时器。定时器,每隔一段时间干一件事(程序里表现为调用一个函数),像闹钟,每隔一天响一次。1 核心API说明import "github.com/mattn/go-gtk/glib"func TimeoutAdd(interval uint, f interface{}, datas ...interfac...原创 2018-02-06 23:29:52 · 5309 阅读 · 1 评论 -
Go版GTK:常用控件—布局
1 水平布局glade设计如下: 示例代码:package mainimport ( "os" "github.com/mattn/go-gtk/gtk")func main() { gtk.Init(&os.Args) builder := gtk.NewBuilder() //新建builder ...原创 2018-02-06 20:30:10 · 7105 阅读 · 0 评论 -
QFileInfo的简单用法
本文转自:http://blog.csdn.net/huyisu/article/details/27550933QFileInfo的几个构造函数:QFileInfo ( )QFileInfo ( const QString & file )QFileInfo ( const QFile & file )QFileInfo ( const QDir & dir, const QString &转载 2017-01-23 13:09:40 · 1468 阅读 · 0 评论 -
Windows Qt 解析网络数据出现ssl错误
在编译的时候,出现了如下错误:qt.network.ssl: QSslSocket: cannot call unresolved function TLSv1_1_client_method qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new qt.network.ssl: QSslSocket:原创 2017-01-16 18:51:28 · 1960 阅读 · 1 评论 -
Qt字符串编码处理
1、Qt字符串编码说明从Qt操作得到的字符串都是utf-8如果使用标准C(ANSI C)库函数,如果包含中文,则标准C库函数则需要GBK编码。//需要头文件#include <QTextCodec>QTextCodec *codec = QTextCodec::codecForName("GBK"); //fileName为QString类型//codec->fromUnicode();把utf原创 2016-07-25 10:17:04 · 1738 阅读 · 0 评论 -
Qt 5.4.2 Linux环境搭建
1)访问官方网站:http://www.qt.io/download-open-source/2)选择离线安装包3)选择合适的安装包下载( 32 位或 64 位)4)安装软件包5)ubuntu 如何打开 Qt Creator?6)环境测试原创 2015-06-12 22:37:05 · 6731 阅读 · 3 评论 -
Qt 5.5.0 Windows环境搭建
1)访问官方网站:http://www.qt.io/download-open-source/2)选择离线安装包3)选择 Windows 离线安装包4)安装软件包5)测试环境6)如何直接打开 Windows 下 Qt 应用程序?原创 2015-07-14 20:41:30 · 11028 阅读 · 2 评论 -
Qt入门学习——Qt快速入门(vim纯代码编写)
写代码前,先需搭建环境,详情请看:《Qt 5.4.2 ubuntu环境搭建》。打开终端,通过vim first_qt.cpp新建文件,由于Qt代码为C++代码,所以,新建文件的后缀为.cpp。写完代码后,我们需要通过g++编译器(C++编译器)把此代码编译为可执行程序,但由于此代码使用的函数不是C++标准库,而是Qt库,编译时需要指定其所依赖的Qt库,这样比较麻烦。我们可以利用Qt提供的qmake工具来编译Qt的源代码。此工程文件缺少一个很重要的东西:模块的添加。Qt 5 定义了多个模块,每个模块包含原创 2015-08-26 11:15:30 · 14741 阅读 · 2 评论 -
Qt入门学习——Qt Creator的使用
通过前面《Qt快速入门(vim纯代码编写)》的学习得知,只有搭建好了 Qt 环境(Qt库和开发工具),即可通过 vim 纯代码编写 Qt 程序,再借助 Qt 里的 qmake 工具编译 Qt 代码。但是,如果 Qt 程序较为庞大,通过上面的方式编写较为麻烦(大大影响编写效率),接下来给大家介绍 Qt 的一个集成开发环境(IDE)——Qt Creator,利用 Qt Creator 可以更加快速及轻易的完成 Qt 开发任务。这里我们需要注意的是,Qt Creator 只是辅助我们快速开发 Qt 程序,并不是原创 2015-08-27 11:02:59 · 87776 阅读 · 2 评论 -
Qt入门学习——Qt Creator 中 ui 文件和 Qt 代码关系
通过《Qt Creator的使用》的学习,我们可以借助 Designer(界面设计器)快速设计界面。当我们编译 Qt 程序代码,Qt Creator 用 uic 工具把 ui 文件的内容转换成 C++ 代码,在工程目录同一级目录的 build- 目录下自动生成 ui_类名.h 文件,如本例子中的 ui_mywidget.h,是由 mywidget.ui 利用uic 工具转换而成,只要通过Designer 修改了图形界面里的内容,ui_mywidget.h 也会跟着自动同步更新内容,ui_mywidget.原创 2015-08-28 10:20:19 · 170251 阅读 · 15 评论 -
Qt入门学习——常用部件介绍
这里先给大家介绍 Designer(界面设计器)中例举的常用部件,以便对 Qt 的部件有一定认识,其具体用法后面再作介绍。Layouts:布局管理组Spacers:空间间隔组(弹簧)buttons:按钮组Item Views:项目视图组Item Widgets:项目部件组Containers:容器组Input Widgets:输入部件组Display Widgets:显示部件组原创 2015-08-28 15:46:09 · 4604 阅读 · 1 评论 -
Qt5获取系统目录
Qt4使用 QDesktopServices::storageLocation(QDesktopServices::xxxx) 来获取一些系统目录,Qt5则要改成QStandardPaths::writableLocation(QStandardPaths::xxxx)。所需头文件:#include 然后可以通过如下语句获取不同的路径:QString QStanda原创 2015-08-31 20:51:10 · 3531 阅读 · 0 评论 -
Qt入门学习——Qt 5 帮助文档的使用
学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必要去记,用到什么就去帮助文档查看用法。我们使用 Qt 帮助文档,主要分为这么几步:1)类使用的相关介绍2)查看所用部件(类)的相应成员函数(功能,参数,返回值)3)查看部件的信号4)查看部件的事件(所对应的虚函数如何编写)1)类使用的相关介绍原创 2015-09-15 18:50:14 · 55392 阅读 · 8 评论 -
Go版GTK:常用控件—行编辑
行编辑,只允许输入一行内容的控件,如密码输入框。 glade设计如下: 常用信号: 信号标识 触发条件 “activate” 行编辑区内部按回车键时触发示例代码:package mainimport ( "fmt" "os" "github.com/mattn/go-gtk/gtk")func main...原创 2018-02-06 17:45:08 · 5964 阅读 · 0 评论 -
Go版GTK:常用控件—进度条
我们到处都能看到进度条的应用,我们下载拷贝个文件,下载个电影等总能看到进度条的影子,如图: 示例代码:package mainimport ( "fmt" "os" "github.com/mattn/go-gtk/gtk")func main() { gtk.Init(&os.Args) builder := gtk...原创 2018-02-06 11:15:35 · 39474 阅读 · 2 评论 -
Go语言版黑白棋(三):背景图、最小化、关闭窗口
功能说明设置一张背景图,增加2个按钮:最小化、关闭窗口。glade界面设计示例代码package mainimport ( "fmt" "os" "unsafe" "github.com/mattn/go-gtk/gdk" "github.com/mattn/go-gtk/gdkpixbuf" ".原创 2018-02-11 00:09:35 · 3091 阅读 · 0 评论 -
Go语言版黑白棋(四):界面其它设计
功能说明界面上增加3个标签,分别用于显示黑白子棋子个数,还有一个用于显示倒计时的时间。还增加2个图片控件,用于提示该谁落子(当前该黑子下,还是白子下)。glade界面设计示例代码package mainimport ( "fmt" "os" "unsafe" "github.com...原创 2018-02-11 00:16:13 · 4117 阅读 · 0 评论 -
Go语言版黑白棋(五):黑白子提示闪烁效果
功能说明通过定时器,实现黑白子提示闪烁效果。大致流程是这样,定时器每隔500毫秒产生一次信号,调用其处理函数,函数里做这样的事情,如果image原来是显示的,则隐藏,原来是隐藏的,则显示。示例代码package mainimport ( "fmt" "os" "unsafe" "github.com/mattn/go-gtk/gdk" "g...原创 2018-02-11 00:22:04 · 3479 阅读 · 0 评论 -
Go语言版黑白棋(六):落子
功能说明鼠标点击棋盘方格,落子。需要使用鼠标事件,棋子通过绘图事件画的。原理说明通过二维数组标志棋盘: 示例代码package mainimport ( "fmt" "os" "unsafe" "github.com/mattn/go-gtk/gdk" "github.com/mattn/go-gtk/gdkpixbu...原创 2018-02-11 00:39:26 · 3672 阅读 · 0 评论 -
Go语言版黑白棋(七):初始化棋子、改变角色
功能说明启动程序时,棋盘默认有黑白棋各2枚,落子时,黑白子交替下(角色切换)原理说明示例代码package mainimport ( "fmt" "os" "unsafe" "github.com/mattn/go-gtk/gdk" "github.com/mattn/go-gtk/gdkpixbuf" "g.原创 2018-02-11 11:42:49 · 2739 阅读 · 0 评论 -
Go语言版黑白棋(八):倒计时
功能说明通过定时器实现倒计时功能,时间为20s,时间到后,如果没有落子,让对方下。示例代码package mainimport ( "fmt" "os" "strconv" "unsafe" "github.com/mattn/go-gtk/gdk" "github.com/mattn/go-gtk/gdkpixbuf&quo原创 2018-02-11 12:26:22 · 2043 阅读 · 0 评论 -
Go语言版黑白棋(九):吃子
功能说明增加吃子规则算法。在一个空格新落下一个棋子,并且翻转对手一个或多个棋子,落子必须要吃子。原理说明示例代码package mainimport ( "fmt" "os" "strconv" "unsafe" "github.com/mattn/go-gtk/gdk" "github.com/matt.原创 2018-02-11 12:40:13 · 3423 阅读 · 0 评论 -
Go语言版黑白棋(十):棋子个数统计、胜负判断
功能说明增加棋子个数统计、胜负判断功能,游戏结束后可选择继续游戏。示例代码package mainimport ( "fmt" "os" "strconv" "unsafe" "github.com/mattn/go-gtk/gdk" "github.com/mattn/go-gtk/gdkpixbuf"原创 2018-02-11 12:46:31 · 2512 阅读 · 0 评论 -
Go语言版黑白棋(十一):机器落子
功能说明机器为白子。机器优先在4个角落落子,如果这4个位置不能吃子,则落在能吃子最多的位置。示例代码package mainimport ( "fmt" "os" "strconv" "unsafe" "github.com/mattn/go-gtk/gdk" "github.com/mattn/go-gtk/gdkpi.原创 2018-02-11 12:51:16 · 6187 阅读 · 0 评论 -
Go语言版黑白棋(二):无边框窗口实现
功能说明需要实现功能为,给窗口去表框,却可以通过鼠标实现移动。glade界面设计示例代码package mainimport ( "fmt" "os" "unsafe" "github.com/mattn/go-gtk/gdk" // "github.com/mattn/go-gtk/gdkpixbuf" "git.原创 2018-02-11 00:04:03 · 4039 阅读 · 1 评论 -
Go语言版黑白棋(一):游戏说明
1 界面参考图片资源下载:https://pan.baidu.com/s/1i6TyX5V2 游戏说明棋盘为8×8的方格布局,开局时在棋盘正中有摆好的四枚棋子,黑白各2枚,交叉放置,由执黑棋的一方先落子,双方交替下子,棋子落在方格内,一局游戏结束后双方更换执子颜色。合法的棋步包括:在一个空格新落下一个棋子,并且翻转对手一个或多个棋子,落子必须要吃子。下子方式:把自己颜色...原创 2018-02-10 23:54:54 · 5435 阅读 · 1 评论 -
Go版GTK:常用事件—绘图事件
GTK界面只要有图片的地方,其底层实际上是通过绘图实现的。绘图实际上也是事件的一种,GTK中,绘图事件也叫曝光事件。绘图的操作需要放在事件回调函数里。1 绘图触发条件绘图时所触发的信号:expose-event。只要触发曝光事件信号”expose-event”,就会自动调用所连接的回调函数。这里需要注意的是,曝光事件信号 “expose-event” 默认的情况下,是自动触发的(当...原创 2018-02-08 17:04:59 · 9387 阅读 · 2 评论 -
Go版GTK:常用控件—标签
标签主要是显示文本信息,用作标志: 示例代码:package mainimport ( "fmt" "os" "github.com/mattn/go-gtk/gtk")func main() { gtk.Init(&os.Args) builder := gtk.NewBuilder() //新建buil...原创 2018-02-05 01:45:01 · 24658 阅读 · 1 评论 -
Go版GTK:常用控件—窗口
常用信号: 信号标识 触发条件 “destroy” 按关闭窗口按钮时触发示例代码:package mainimport ( "os" "github.com/mattn/go-gtk/gtk")func main() { gtk.Init(&os.Args) builder := gtk.Ne...原创 2018-02-05 01:42:55 · 32741 阅读 · 4 评论 -
Go版GTK:glade
1 glade简介请参考:http://blog.csdn.net/tennysonsky/article/details/430160352 glade安装go源码使用的是gtk2版本,默认安装的glade关联的为gtk3.0以上的版本,需要单独安装一个合适版本的glade。详情请参考:http://blog.csdn.net/tennysonsky/article/deta...原创 2018-02-04 23:57:03 · 44038 阅读 · 5 评论 -
Go版GTK:信号处理
1 概述前面我们学习的GTK界面都是静态的,我们按下按钮它是没有响应的,如何让它有响应呢?接下来我们一起学习GTK的信号处理。GTK采用了信号与回调函数来处理窗口外部传来的事件、消息或信号。当信号发生时,程序自动调用为信号连接(注册)的回调函数。学习图形界面编程,我们会经常接触到“信号”这个名词。GTK中的“信号”实际上是一种软件中断。“中断”在我们生活中经常遇到,譬如,我正在房间里打...原创 2018-02-03 21:02:42 · 27097 阅读 · 0 评论 -
Go版GTK:控件
1 控件简介控件是对数据和方法的封装。控件有自己的属性和方法。属性是指控件的特征。方法是指控件的一些简单而可见的功能。如按钮就是一个控件,这个按钮是方形的,里面有张图片,这是我们能看到外观属性,同时,这个按钮具备被人按下的功能。GTK中控件主要分为两类:容器控件,非容器控件。容器控件:它可以容纳别的控件,我们可以理解为盒子,盒子拿来装东西。容器控件又分为两类,一类只能容纳一个控件,如...原创 2018-02-02 10:55:14 · 16037 阅读 · 1 评论