随笔分类 -  QT5

热爱Qt,热爱生活!
摘要:导读 正如web前端开发中CSS(Cascade Style Sheet)的作用一样,Qt开发中也可以使用修改版的QSS将逻辑业务和用户界面进行隔离。这样,美工设计人员和逻辑实现者可以各司其职而不受干扰。更重要的是,由于界面和逻辑处理是分离的,低耦合性使得代码重构的工作量可以减少到最小。QSS和CSS的语法几乎一致,除了Qt自身增加的一些属性之外,其余的属性都可以在CSS2或CSS3中找到对应的属性。因此,如果曾经有过CSS的使用经验,那么QSS的使用将游刃有余。关于QSS的使用实践,打算撰写一系列博客来记录使用过程中的一些技巧和方法。本篇是系列第一篇,主要探讨QPushButton及QMe. 阅读全文
posted @ 2014-04-06 17:34 24K纯开源 阅读(22477) 评论(2) 推荐(6)
摘要:导读 一款流行的软件,往往会在功能渐趋完善的时候,通过改善交互界面来提高用户体验。毕竟,就算再牛逼的产品,躲藏在糟糕的用户界面之后总会让用户心生不满。界面设计需综合考虑审美学、心理学、设计学等多因素,是一份精细活。这篇博文仍然以Qt的使用为主旨,探讨一下在Qt中如何进行系统托盘的个性化定制。介绍 首先我们看看几款知名软件的系统托盘设计: 上图是金山卫士的系统托盘菜单设计。我们稍作分析:整个托盘菜单窗口是个半透明的设计,窗口边框进行了圆角处理。底部的菜单项包含三个Button,倒数第二、三个菜单项的右部还加上了一个自定义的单选按钮。顶部菜单项则包含一个评级组件;其他菜单项则没有什么特别,加... 阅读全文
posted @ 2014-03-30 14:29 24K纯开源 阅读(6692) 评论(9) 推荐(3)
摘要:导读 相比于Qt Creator,我更喜欢用VS2010来进行开发。虽然启动时间相对较慢,但是VS下强大的快捷键和丰富的插件,以及使用多年的经验,都让我觉得在开发过程中得心应手。其中最重要的一点是,有时候Qt Creator报的错误莫名其妙。要根据提示找到错误根源显得无从下手。而VS的一般错误说明都比较人性化,即便在某些时候无从解决,也可以通过搜索引擎大致定位出错误的源头。下面是在调试网上的一些源代码的时候,积累下来的一点经验,记下来一来备忘,二来也可供后来人参考。The system cannot find the path specified 当我从用VS2010打开从网上下载下来的... 阅读全文
posted @ 2014-03-16 20:57 24K纯开源 阅读(5087) 评论(6) 推荐(3)
摘要:前言 在上一篇中,我们基本上完成了主要功能的实现,剩下的一些导出、进程子模块信息等功能,留到后面再来慢慢实现。这一篇来讲述如何对主界面进行个性化的定制。Qt库提供的只是最基本的组件功能,使用这些组件开发出来的软件基本上个性可言。如果开发的产品只讲究实用性,那么UI体验尚可搁置一边。如果要面向客户推广部署,那么改善一下UI视觉效果对于产品的推广也会有莫大的帮助。闲话不多说。先来对比一下界面个性化定制前后的效果: 先不说界面美化之后,界面有多绚丽、震撼人心。但是,突出产品主题、彰显个性这块倒是不折不扣。UI设计毕竟是一门学问,不然也不会有视觉交互师这种职业了。那么,如何用Qt来对软件界面进行... 阅读全文
posted @ 2014-03-04 15:29 24K纯开源 阅读(23190) 评论(6) 推荐(1)
摘要:导言 继上篇《用Qt写软件系列二:QIECookieViewer》之后,有一段时间没有更新博客了。这次要写的是一个简单的系统工具,需求来自一个内部项目。功能其实很简单,就是查看当前当前系统中运行的进程信息以及系统中已安装软件信息。说出来也就这么两句话,然而做起来的时候,问题却层出不穷。另外,一直想研究一下Qt中的样式表(Style Sheet)的使用,就这这个机会实践了一下,也算收获颇多。 这一篇主要讲该工具的底层实现。前面也说过,这个小工具总共有有两个功能:查看进程信息和已安装软件信息。因此我们分成两个部分看。首先说明,我的开发环境为Visual Studio 2010旗舰版,Qt库... 阅读全文
posted @ 2014-03-03 19:27 24K纯开源 阅读(5448) 评论(0) 推荐(3)
摘要:预备 继上篇《浏览器缓存查看器QCacheViewer》之后,本篇开始QCookieViewer的编写。Cookie技术作为网站收集用户隐私信息、分析用户偏好的一种手段,广泛应用于各大网站。对于网站的精准营销、使用反馈、数据挖掘等具有不可估量的作用。Cookie按照创建者的不同,分成两类:服务端创建的Cookie和客户端浏览器创建的Cookies。那么,作为用户想要查看当前主机的Cookies文件该怎么办呢?最简单的办法是:直接到Windows目录下去找!Cookies文件是以ASCII码字符的形式保存的,因此可以直接用记事本打开查看。然而,由于Cookies文件是以Unix风格换行的,格式非 阅读全文
posted @ 2014-02-15 15:33 24K纯开源 阅读(3671) 评论(1) 推荐(7)
摘要: 阅读全文
posted @ 2014-02-13 17:55 24K纯开源 阅读(3231) 评论(1) 推荐(3)
摘要:前言继上篇文章(Simple bar chart)推出之后,本篇文章继续ChartDirector的使用。在这篇Blog中,博主实现的是soft lighting bar。soft lighting bar是在一个XYChart中具备多个Bar的图表,每一个Bar具有柔和光影效果(soft lighting)。在Bar chart大类中,还有glass lighting效果,也是在Bar的光影上面做功夫。这种效果主要是通过在添加图层(BarLayer)时,传递不同的参数实现。用户通过在设置面板进行配置,可以实现输出不同色调和格式的图表。效果图(图一) 整体界面 (图二) 设置图表的背景色... 阅读全文
posted @ 2014-01-03 18:27 24K纯开源 阅读(4380) 评论(0) 推荐(1)
摘要:关于Simple Bar ChartSimple bar chart是XYChart大类中的Bar chart类型中的最简单的例子。Bar chart的表现形式简单直观,在数据量较少、数据维度简单等场景下有较好的适用性。对于一个Bar chart,具有俩个重要的组成部分:XY坐标系,Bars。XY坐标具有坐标值、名称等属性,Bar之间具有颜色、间距、宽度等属性。下面的应用实例以Qt为基础,编写了一个简单的对话框程序,展示了ChartDirector类库和Qt结合的一般形式。效果图图表数据是随意添加的,添加了保存功能,目前只能保存为内置的文件名和文件格式。关键代码解读源代码主要分成两个部分:第一 阅读全文
posted @ 2013-12-29 20:26 24K纯开源 阅读(3559) 评论(1) 推荐(0)
摘要:ChartDirector介绍 ChartDirector是一款小巧精细的商业图表库。其适用的语言范围非常广泛,包括.Net, Java, Asp, VB, PHP, Python, Ruby, C++等。ChartDirector既可以为WEB应用提供图表支持,还能为桌面应用提供良好的图表体验。除此之外,ChartDirector还能与MFC, Qt等界面框架无缝结合。这一点,在官方提供的帮助文档中即可窥知一二。在本系列文章中,也将以Qt应用程序框架作为基础,编写各种图表的应用实例。 正如上面所说的,ChartDirector是一款商业图表库。在未获得官方使用授权的情况下使用,图表中会出现黄 阅读全文
posted @ 2013-12-29 19:42 24K纯开源 阅读(8567) 评论(3) 推荐(3)
摘要:在Linux下安装好Qt 5.0之后,使用Qt Creator创建了一个基于QMainWindow的框架程序。原本应该可以顺利的完成编译工作,因为自带的模板工程没有经过任何修改。可是在编译整个工程的时候发现,总是在make这一步失败,报错具体内容为:Circular <- first dependency dropped.具体内容如下图: 于是初步怀疑是生成的Makefile文件有问题。在网上查了查,大部分都说是Makefile文件中存在循环依赖的问题。可是查来查去。也不知道到底是那一个出现了循环依赖关系。后来终于在ubuntu的官方论坛上看到一个答案:原来,由于我把这个工程命名为了fi 阅读全文
posted @ 2013-07-18 14:23 24K纯开源 阅读(4858) 评论(1) 推荐(0)
摘要:1、问题 一个这样的场景:主窗口界面有一个菜单项,点击该菜单项弹出一个对话框。点击对话框上的测试按钮,显示主窗口类中的一个字符串成员的内容。这就是整个窗口传值的需求描述。如何解决呢?首先想到的解决方法自然是使用Qt自带的signal/slot机制。即首先发信号给父窗口,父窗口接到信号执行槽函数发送一个携带所需数据的信号给子窗口。但是疑问来了:要在子窗口中接收到父窗口的信号必须进行signal和slot的绑定。这需要主窗口类的定义(1)。担心头文件的递归包含,我们只好再想另外一个方法。直接在子窗口中利用指向父窗口的指针来访问父窗口类的成员如何?但是,这显然也牵涉到了头文件的递归包含(2)。但,. 阅读全文
posted @ 2013-05-14 15:56 24K纯开源 阅读(6663) 评论(2) 推荐(0)
摘要:第一步1、准备好Mysql数据库安装文件,Qt5.0完整的离线安装包,以及Qt5.0的完整的源代码。安装好程序,假设Mysql的安装路径为:C:\MySQL5.5,Qt5.0的安装路径:C:\Qt\Qt5.0.0-rc2\5.0.0-rc2,而Qt5.0的解压路径为:C:\Qt\qt-5.0.1-src。 注意事项:(1)安装mysql数据库的时候,网上很多教程说要选择自定义安装,并把lib和include这个选项选上。其实这个并不重要。因为我机器上很久前装mysql时选的是typical安装的,在安装目录下仍然可以找到lib和include这两个文件夹。安装方式并不重要。(2)Qt5.0是. 阅读全文
posted @ 2013-05-04 21:42 24K纯开源 阅读(2976) 评论(2) 推荐(0)
摘要:使用QT来创建一个系统托盘,事实上是一件很简单的事。为什么这么说?一是因为QT文档给出了比较详细的例子,二是QT的结构比较优雅,设计风格统一。但是在动手之前,我们要从哪里下手?虽然QT文档给出了一个比较详细的例子,但由于功能较多,所以看起来比较费劲。我们在这只是抽丝剥茧,只实现系统托盘这一个功能。首先,使用QT creator创建一个GUI工程,继承于QDialog还是QMainWindow还是QWidget都无所谓。我们以继承QMainWindow为例说明。创建完毕之后,creator将自动生成一些文件,工程文件如下:打开头文件mainwindow.h。在类声明中添加一些必要的成员变量,如下 阅读全文
posted @ 2013-01-25 21:27 24K纯开源 阅读(6219) 评论(1) 推荐(0)
摘要:前面提到,有两种方法可以提取到radio按钮组中当前被选中的按钮(看这里)。这一篇中,我们根据ID来获取按钮。代码: ui->BG->setId(ui->radioButton, 0); ui->BG->setId(ui->radioButton_2, 1); ui->BG->setId(ui->radioButton_3, 2); ui->radioButton->setChecked(true); QRadioButton* pbtn = qobject_cast<QRadioButton*>(ui->BG 阅读全文
posted @ 2013-01-14 15:56 24K纯开源 阅读(5171) 评论(1) 推荐(0)
摘要:QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行:方法一:采用对象名称进行获取代码: 1 QRadioButton* pbtn = qobject_cast<QRadioButton*>(ui->BG->checkedButton()); 2 QString name = pbtn->objectName(); 3 if(!QString::compare(name, "radioButton")) 4 { 5 QMessageBox::information(this, "Tips", 阅读全文
posted @ 2013-01-14 10:43 24K纯开源 阅读(30250) 评论(0) 推荐(0)