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. MyBatis自动生成代码示例

    在项目中使用到mybatis时,都会选择自动生成实体类,Mapper,SqlMap这三个东东. 手头上在用的又不方便,找了下网上,其实有很多文章,但有些引用外部文件时不成功,也不方便,所以重新整理了下 ...

  2. 利用FileStream实现多媒体文件复制

        利用FileStream实现多媒体文件复制的主要思路在于利用两个FileStream对象,一个读取字节,另一个对象写入字节既可.     涉及知识点: 1.通常我们操作的File类,FileS ...

  3. Java经典实例:在文本中匹配换行符

    默认情况下,正则表达式 ^ 和 $ 忽略行结束符,仅分别与整个输入序列的开头和结尾匹配.如果激活 MULTILINE 模式,则 ^ 在输入的开头和行结束符之后(输入的结尾)才发生匹配.处于 MULTI ...

  4. 【转】给Windows + Apache 2.2 + PHP 5.3 安装PHP性能测试工具 xhprof

    原文链接:http://blog.snsgou.com/post-816.html 1.下载XHProf 到这里 http://dev.freshsite.pl/php-extensions/xhpr ...

  5. .Net加密保护工具分析介绍

    本文主要介绍一些dotNet加密保护工具的原理以及就其脱壳进行简单探讨. remotesoft protector.maxtocode..Net Reactor.Cliprotector.themid ...

  6. 简单的Writer和Reader

    Writer用于写出去到文件中,Reader用于将外面的文件读进来控制台 Writer和Reader有许多子类,但是子类大多都是直接运用父类Writer和Reader的方法,而且Writer和Read ...

  7. vsftp "上传 553 Could not create file"

    我在LINUX下VSftp建立一个FTP服务器,但从WINDOWS使用FTP时,无法上传也无法下载!出错如下 ftp>; ls 200 PORT command successful. Cons ...

  8. IOS 调用WebService(同步和异步)

    因为公司的服务全都是webservice,每次总要花费大量时间在调试服务上面,干脆就写了一个解析wsdl的项目,希望将来能用上吧.还未经过烘焙,有问题,还请高手点播点播. 下面,我拿天气服务的wsdl ...

  9. a标签的href值

    <a href='#'>click</a>实验证明,页面上能不用这个值就最好不要用这个#,这个#会让你的页面瞬间滚动到页面的顶部,我不知道已经踩了多少次坑了,就是因为这个'#' ...

  10. 从0开始学angularjs-笔记02

    上一节课主要跟大家讲解了angularjs的几种特性和看了一个简单的双向绑定的例子.最近都没有时间写博客了....忙成狗呀...今天周末,在写一篇吧~~ 今天主要跟大家详细讲解一下angularjs的 ...