QT学习第一天  坚持住!!

一 Qt概述
1.Qt发展历史
(1)1991年诞生(Haavard Nord/Eirik Chambe-Eng),
(2)1994年创立Troll Tech(奇趣科技)
(3)2005年QT4.0
(4)2008年被Nokia收购
(5)2009年源代码开源
(6)2012年Nokia将全部QT业务和知识产权卖给Digia公司
(7)2013年QT5.0 QT5.1 QT5.2
(8)2014年Digia公司成立 The Qt Company子公司
2.Qt5.4的安装
(1)下载QT安装法
(2)运行安装程序
(3)根据提示安装到主目录下
(4)配置环境变量
3.Qt开发相关工具介绍 都在~/QT../...../bin下
(1)assistant(帮助手册)
在终端输入 assistant &
(2)qmake(qt构建器)
qmake -v :查看当前所用QT的版本
qmake -project :生成和平台无关的工程描述文件(.pro)
qmake : 根据工程文件生成和平台相关的Makefile
make :根据qmake所生成的Makefile编译和链接,生成执行文件
(3)designer(QT设计师)
图形界面的编辑器,用于设计UI界面,得到”.ui”的文件
c++不支持...需要转换
(4)uic(转换工具)
.ui ——>> .h
(5)qtcreateor(QT创造器)
集成开发环境IDE, 包含上面的所有工具
4.QT助手的使用
eg:查看QApplication类的使用
(1)public Type(共有类型,一般不关注)
(2)Properties(类中的成员变量)
(3)Public Functions(公有成员函数包含构造函数,重点关注)
(4)Reimplemented Public Functions(共有的虚函数)
(5)Public Slots(槽函数,qt中用slots声明的函数)
 class A{
 public slots:
     void func(void);//槽函数
 };
(6)Signals(信号函数,用signal声明的函数)
 class A{
 signal:
     void sig_func(void);//信号函数
 };
(7)Static Public Members(静态成员,需要关注)
静态成员不需要对象,可以直接用类名::进行访问
(8)Reimplemented Protected Functions(保护的虚函数)
(9)Macros(宏,元对象)
Q_OBJECT
SIGNAL
SLOT
(10)Detailed Description(详细说明,介绍一些主要的函数API的使用等)
 
二 第一个QT程序
1.创建QT工程目录:”Hello"
注意:每一个QT程序都要放在一个独立的目录下.
2.编写应用程序: “Hello.cpp”
3.使用 “qmake -project”生成和平台无关的项目描述文件
修改Hello.pro:
QT += widgets   #加载和窗口组件相关的功能
TEMPLATE = app  #构建的是一个应用程序
TARGET = Hello  #最后生成的可执行程序的名字
INCLUDEPATH += .#头文件路径
4.qmake
生成和平台相关的
5.make
编译链接生成可执行程序,如果出错,修改源代码,重新make即可
6.运行测试
./Hello
*7.在QT中显示中文字符串
(1)QT5.4内部使用Unicode(utf-8),QT4.8内部使用utf-16
(2)linux默认使用utf8
(3)Windows中默认使用ANSI(中文GBK,英文ASK2)
(4)解决编码问题引发的错误
->>构造编码对象
#include <QTextCodec>
QTextCoderc *coder = QTextCodec::CodecForName(“当前的编码方式”)
编码方式指编写代码时所用的编码,一般linux是utf8,windows是GBK
->>通过编码对象将要显示中文的字符串转换成QT内部的编码方式
codec->toUnicode(“含有中文的字符串”);
 
<<案例>>构建一个QPushButton对象(按钮),显示中文内容 “按我"
(1)用vi编写源程序,构建,正常可以直接显示中文
(2)将源程序拷贝window中,用记事本打开,另存为ANSI,替换掉原来文件
(3)将ANSI文件拷贝回ubuntu替换原来的程序,重新make,结果是乱码
(4)设置编码对象,转换为QT内部编码,再次make,又可以正常显示中文
 
三 信号和槽函数(重点)
1.信号和槽是QT自己定义的一种通信机制,实现不同对象之间数据交互.其实现本质就是函数的调用一个对象发出信号,连接到这个信号的对象会执行相应槽函数.
<<案例>>创建一个按钮对象和一个标签对象,点击按钮关闭标签
2.建立信号和槽函数连接
 QMetaObject::Connection QObject::connect(
     const QObject *sender, const QMetaMethod &signal,
     const QObject *receiver, const QMetaMethod &method,
     Qt::ConnectionType type = Qt::AutoConnection
 );
sender:发送信号的对象指针(QObject的子类对象)
signal:信号函数
receiver:接收信号的对象指针
method:槽函数
 
<<案例>>创建一个按钮对象和一个标签对象,点击按钮关闭标签
QPushButton btn(…);
QLabel label(…);
QObject::connect(&btn,SIGNAL(clicked()),&label,SLOT(close()));
 

QT学习第1天的更多相关文章

  1. 【转载】分享一些Qt学习资源,欢迎下载

    资源来源:http://bbs.csdn.net/topics/390358737 经过我一翻整理,把一些我收集到的Qt学习资源分享给大家,主要适合新手,老鸟可以直接忽略我.要说明一下,很多资源都是在 ...

  2. QT学习之路--创建一个对话框

    Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学 ...

  3. 转载: Qt 学习之路 2归档

    Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/

  4. Qt 学习资料

    Qter开源社区http://www.qter.org/ [Qt教程], 作者yafeilinux [视频] QT学习之路:从入门到精通 <C++ Qt 编程视频教程>

  5. qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果

    应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...

  6. Qt学习博客推荐

    附录C Qt资源 C.1 Qt 官方资源 全 球各大公司以及独立开发人员每天都在加入 Qt 的开发社区.他们已经认识到了Qt 的架构本身便可加快应用程序开发进度.这些开发人员,无论是想开发单平台软件. ...

  7. qt学习教程1.qt开发环境搭建

    qt学习教程1.qt开发环境搭建 首先下载qt 下载地址:http://download.qt.io/archive/qt/ 此教程使用的版本为5.1.1 下载好后,打开安装包,然后点下一步 选择一个 ...

  8. QT学习教程

    原地址:http://www.devbean.NET/2012/08/qt-study-road-2-catelog/ 网上看到的不错的教程 本教程以qt5为主,部分地方会涉及qt4.据说非常适合qt ...

  9. Qt学习之路

      Qt学习之路_14(简易音乐播放器)   Qt学习之路_13(简易俄罗斯方块)   Qt学习之路_12(简易数据管理系统)   Qt学习之路_11(简易多文档编辑器)   Qt学习之路_10(Qt ...

随机推荐

  1. GJM : 基于Actor模式的c#网络游戏服务器的实现和Unity游戏客户端的连接 [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  2. 奇怪的Hibernate——当?遇上%

    今天写了一个模糊查询的SQL语句,发现了点有趣的东东 情景: 平时写模糊查询的时候是"select * from user where username like %?%" 然后就 ...

  3. Wrangle – 响应式的,触摸友好的多选插件

    Wrangle 是一个响应式,触摸友好的选择插件,支持 jQuery 以及 Zepto.Wrangle 为多项选择提供了一个独特的方法:通过画一条贯穿项目的线条来选择项目.它给你的应用程序的一种新的方 ...

  4. CSS3盒模型温故

    CSS有一种基础设计模式叫盒模型,定义了Web页面中的元素是如何看做盒子来解析的.每一个盒子有不同的展示界面,下面就来介绍盒模型,主要有一下几种盒模型:inline.inline-block.bloc ...

  5. HTML <fieldset> 标签将表单内的相关元素分组

    <fieldset> 标签将表单内容的一部分打包,生成一组相关表单的字段. 当一组表单元素放到 <fieldset> 标签内时,浏览器会以特殊方式来显示它们,它们可能有特殊的边 ...

  6. 在线代码编辑器CodeMirror简介

    1.什么是Code Mirror 最近做一个项目需要在网页上实现一个代码编辑器,支持语法高亮.自动缩进.智能提示等功能.发现Code Mirror刚好满足所有需求.Code Mirror是由js写的一 ...

  7. 设置时间 new Date

    1.标准格式下的时间是object ,操作时可以通过 var cDate=new Date(startTime.getTime());来复制当前日期避免操作给初始日期带来影响 2. 以月为单位计算想要 ...

  8. Android中的Interpolator

    Android中的Interpolator Interpolator用于动画中的时间插值,其作用就是把0到1的浮点值变化映射到另一个浮点值变化. 本文列出Android API提供的Interpola ...

  9. JavaScript小例子:复选框全选

    JavaScript小例子:复选框全选 这只是一个小例子,很简单,但是这个功能还是很常用的: 实现后效果如图: JavaScript代码: <script type="text/jav ...

  10. Android 在C代码中调用logcat

    本文给<Android java传递int类型数组给C>中添加C代码中调用logcat的功能 Android.mk文件增加以下内容 LOCAL_LDLIBS += -llog C代码中增加 ...