一、前言

  作为第三篇的最后一部分,我们来看一下Qt的控件,谈到控件,就会让人想到界面的美观性和易操作性,进而想到开发的便捷性。作为windows界面开发的MFC曾经是盛行了多少年,但是其弊端也随着其他界面库的面世而不断的被放大,对于一个刚学会C或者C++转而学习windows界面开发的新手来说,MFC的控件和界面设计抽象而且复杂,也许现在你还记得MFC控件重绘比其他界面库多花费的时间,走过的弯路,调过的bug。因此,我们现在来看看Qt会不会带给我们不一样的体验,Let‘s go。

二、控件介绍

2.1 按钮组(Buttons)

  对于按钮的展示和操作,我们直接通过图片和代码的方式来展示。

Push Button:按钮

Tool Button:工具按钮

Radio Button:单选按钮

Check Box:复选框

Command Link Button:命令连接按钮

Dialog Button Box:窗口按钮盒

2.1.1 按钮实例

 #include "mywidegt.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidegt w;
/*设置主窗体的位置和初始大小*/
w.setGeometry(,,,);
w.show();
return a.exec();
}

main.cpp

 #ifndef MYWIDEGT_H
#define MYWIDEGT_H #include <QWidget> class MyWidegt : public QWidget
{
Q_OBJECT public:
MyWidegt(QWidget *parent = );
~MyWidegt();
}; #endif // MYWIDEGT_H

mywidegt.h

 #include "mywidegt.h"
#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h> MyWidegt::MyWidegt(QWidget *parent)
: QWidget(parent)
{
/*设置对话框的最小显示尺寸*/
setMinimumSize(,);
/*设置对话框的最大显示尺寸*/
setMaximumSize(,);
/*PushButton的构造函数
QPushButton::QPushButton(const QString & text, QWidget * parent = 0)
*/
QPushButton *quit=new QPushButton("Quit",this);
/*setGeometry(int x, int y, int w, int h)从坐标(x,y)开始显示一个w*h大小的界面,范围不能超过上面设置的尺寸*/
quit->setGeometry(,,,);
/*设置字体 void setFont(const QFont &)*/
quit->setFont(QFont("Times",,QFont::Bold)); connect(quit,SIGNAL(clicked()),qApp,SLOT(quit())); } MyWidegt::~MyWidegt()
{ }

mywidegt.cpp

2.2 输入控件组(Input Widegets)

输入控件组(Input Widegets)包含的各个控件的名称依次如图所示

Combo Box: 组合框

     Font Combo Box: 字体组合框

     Line Edit: 行编辑

     Text Edit: 文本编辑

     Plain Text Edit:文本编辑

     Spin Box: 数字显示框(自旋盒)

     Double Spin Box: 双自旋盒

     Time  Edit: 时间编辑

     Date Edit: 日期编辑

     Date/Time Edit: 日期/时间编辑

     Dial:拨号

     Horizontal Scroll Bar: 横向滚动条

     Vertical Scroll Bar:垂直滚动条

                  Horizontal Slider: 横向滑块

                  Vertical Slider:垂直滑块

                  Key Sequence Edit:快捷键编辑

2.2.1 控件类介绍

1、QDateTime类

  在Qt5中,可以使用QDateTime类类获取系统的时间。通过QdateTime::currentDateTime()来获取本地系统的时间和日期吸纳好。可以通过date()和time()来返回datetime中的日期和时间部分,代码如下。

 Qlabel *datalabel = new Qlabel();
QdateTime *datatime=new QdateTime(QdateTime::currentDateTime());
datalabel->setText(datatime->date().toString());
datalabel->show();

2、Qtimer类

  定时器(Qtimer)的使用很简单,只需要以下几个步骤就可以完成定时器的应用。

  (1)新建一个定时器

QTimer *time_clock=new Qtimer(parent);

  (2)连接这个定时器的信号和槽,利用定时器的timeout()。

connect(time_clock,SIGNAL(timeout()),this,SLOT(slottimedone()));

  定时时间一到就会发送timeout()信号,从而出发slottimedone()槽去完成某件事情。

  (3)开启定时器,并设定定时周期

  开启定时器有两种方式,start(int time)和setSingelShot(true)。其中,第一种表示每隔“time”秒就会重启定时器,可以重复出发定时,利用stop()将定时器关闭;而setSingleShot(true)则是仅启动定时器一次。工程中常用的是前者,比如 time_clock->start(2000);

2.3 显示控件组(Display Widegts)

        Lbael:标签

        Text Browser:文本浏览器

        Graphics View:图形视图

        Calendar: 日历

        LCD Number:液晶数字

Progress Bar:进度条

Horizontal Line:水平线

 Vertical Line:垂直线

QDeclarativeView:向QML暴露数据视图

        QQuickWidegt:快速布局

QWebView:web视图

2.3.1 控件类介绍

(1)Graphics View对应于QGraphicsView类

(2)Text Browser对应于QTextBrowser类。QTextBrowser类继承自QTextEdit,而且近视只读的,对立面的内容并不能进行更改,但是相对于QTextEdit来讲,它还具有链接文本的作用。

2.4 空间间隔组(Spacers)

    Horizontal Spacer:水平间隔

Vertical Spacer:垂直间隔

2.5  布局管理组(Layouts)

    Vertical Layout: 垂直布局

Horizontal Layout:横向(水平)布局

Grid Layout:网格布局

Form Layout: 表格布局

2.6 容器组(Containers)

        Group Box:组框

     Scroll Area:滚动区域

     Tool   Box:工具箱

     Tab Widget:标签小部件

    Stacked Widegt:堆叠部件

    Frame :帧

    Widget:小部件

    MdiArea:MDI区域

      Dock Widget:停靠窗口部件

      QAxWidget:封装Flash的ActiveX控件

2.7 项目视图组(Item Views)

   List View:清单视图

Tree View:树视图

Tabel View:表视图

Column View:列视图

2.8项目控件组(Item Widgets)

    List Widegt:清单控件

Tree Widegt:树形控件

Tabel Widegt:表控件

三、 综合样例

 #ifndef DIALOG_H
#define DIALOG_H #include <QDialog> namespace Ui {
class Dialog;
} class Dialog : public QDialog
{
Q_OBJECT public:
explicit Dialog(QWidget *parent = );
~Dialog(); private:
Ui::Dialog *ui;
private slots:
void on_lineEdit_textChanged();
}; #endif // DIALOG_H
 #include "dialog.h"
#include "ui_dialog.h" Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
/*只允许第一个字元输入大小写英文字母,后面接一位非0的数字,再接0~2位可为0的数字*/
QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
//设置验证器,即只能输入正则要求的类型的输入
ui->lineEdit->setValidator(new QRegExpValidator(regExp,this));
connect(ui->okButton,SIGNAL(clicked()),this,SLOT(accept()));
connect(ui->cancelButton,SIGNAL(clicked()),this,SLOT(reject())); } Dialog::~Dialog()
{
delete ui;
} void Dialog::on_lineEdit_textChanged()
{
//当编辑框检测到有输入时,将ok按钮设置为可用
ui->okButton->setEnabled(ui->lineEdit->hasAcceptableInput());
}

四、 小结

  好了,到了这里关于模板库、工具类和控件的内容就基本说完了,详细的内容和重点会在以后的学习中相应的有所提及,最后希望自己能够学得深入,也希望读者能够读完有所收获。

我的QT5学习之路(三)——模板库、工具类和控件(下)的更多相关文章

  1. Chapter2:Qt5模板库,工具类及控件

    2.1 字符串类 QString类保存16位Unicode值,提供了丰富的操作,查询和转换等函数.  (1):QString提供了一个二元的"+"操作符用于组合两个字符串  (2) ...

  2. Android开发学习之路-Palette颜色提取工具类使用

    视频(要FQ):https://www.youtube.com/watch?v=5u0dtzXL3PQ Palette是一个在support-v7包中的一个颜色提取工具类,用法比较简单,而且是谷歌官方 ...

  3. 我的QT5学习之路(目录)

    说明:本目录内容为自己学习的心得和记录,参考资料来源于网络,学习过程中多方汲取,如有错误,欢迎指正和批评. Qt开发相关文章目录 一.我的Qt学习之路系列 1.[笔记]我的Qt学习之路(一)——浅谈Q ...

  4. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

  5. C#可扩展编程之MEF学习笔记(三):导出类的方法和属性

    前面说完了导入和导出的几种方法,如果大家细心的话会注意到前面我们导出的都是类,那么方法和属性能不能导出呢???答案是肯定的,下面就来说下MEF是如何导出方法和属性的. 还是前面的代码,第二篇中已经提供 ...

  6. Redis——学习之路三(初识redis config配置)

    我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息.     ...

  7. 我的QT5学习之路(一)——浅谈QT的安装和配置

    一.前言 说到Qt,不能不说到C++,这门伟大的语言.因为其面向对象的编程思想和陡峭的学习曲线,一开始学习起来很是吃力.Qt从QT4开始基本封装了很多C++的工具库和界面库,而且支持跨平台,这是它最大 ...

  8. 我的QT5学习之路(二)——第一个程序

    一.前言 “工欲善其事,必先利其器”,上一节,我介绍了Qt的安装和配置方法,搭建了基本的开发平台.这一节,来通过一个简单的例子来了解Qt的编程样式和规范,开始喽~~~ 二.第一个程序——Hello W ...

  9. 我的QT5学习之路(四)——信号槽

    一.前言 前面说了Qt最基本的实例创建.控件以及工具集的介绍,相当于对于Qt有了一个初次的认识,这次我们开始认识Qt信号通信的重点之一——信号槽. 二.信号槽 信号槽是 Qt 框架引以为豪的机制之一. ...

随机推荐

  1. C#学习笔记-中英文切换(XML)

    这几天因为软件需要加英文版本,所以查了好久的资料找到了相关的信息,原资料参考:http://blog.csdn.net/softimite_zifeng 上网查的中英文切换大约有两种方式:1.动态加载 ...

  2. WebService,ASMX文件使用XML格式数据传递参数、验证与获取XML格式返回值的一种方式

    1:首先WebService方法定义,每个方法定义两个参数,一个用于验证权限,string格式的XML文本用于传输数据.最终目的实现,WebService方法,验证权限,获取XML数据,处理之后返回X ...

  3. safari

    http://www.zhangxinxu.com/wordpress/2014/10/mobilebone-js-mobile-web-app-core/ http://rawgit.com/zha ...

  4. mysql中LOCATE和CASE WHEN...THEN...ELSE...END结合用法

    之前项目中需要写一个sql,就是查出某个调研详情中,选A答案,B答案,C答案...F答案的人各有多少人,这个sql也是费了很大的力气才写出来,故记下来,方便以后使用. 其中tbl_research_i ...

  5. javascript变量的引用类型值

    JavaScript变量可以用来保存俩种类型的值:基本类型和引用类型值 前言 JS变量可以用来保存两种类型的值:基本类型值和引用类型值.基本类型的值源自一下5种基本数据类型:Underfined.Nu ...

  6. Web前端面试指导(十八):用纯CSS创建一个三角形的原理是什么?

    题目点评 三角形的图标在网页设计是很常见的,属于基本常识题,只要在练习做到过这个功能都能回答出来,可以把你做过的思路描述出来就可以了,本题的难易程度为简单 答题要点 1.采用的是均分原理 盒子都是一个 ...

  7. GeoAnalytics Server学习笔记

    GA的输入数据源 输入源 存储形式 Spatiotemporal 时空型ArcGIS DataStore 物联网数据 (通过GeoEvent Server输出) 大数据共享目录BigDataShare ...

  8. 样式 bootstrap purecss Amaze UI 推荐

    Bootstrap 简洁.直观.强悍的前端开发框架,让web开发更迅速.简单. Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAV ...

  9. 微服务架构之spring boot admin

    Spring boot admin是可视化的监控组件,依赖spring boot actuator收集各个服务的运行信息,通过spring boot actuator可以非常方便的查看每个微服务的He ...

  10. QT5.9 新特性与版本回顾

    原文链接: http://blog.qt.io/blog/2017/05/31/qt-5-9-released 翻译内容如下,采用的是第三方某在线翻译软件,所以有些地方不是太精确,纵然大吉做了一定的调 ...