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. POJ 1061 青蛙的约会 扩展欧几里得

    扩展欧几里得模板套一下就A了,不过要注意刚好整除的时候,代码中有注释 #include <iostream> #include <cstdio> #include <cs ...

  2. GJM :用JIRA管理你的项目(三)基于LDAP用户管理 [转载]

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

  3. 相识不易,要懂珍惜----------Spring Mvc

    一.Spring Mvc简介 Spring Mvc也叫Spring Web Mvc,属于表现层额框架.Spring Mvc是Spring框架的一部分,是在Spring3.0后发布的. 二.Spring ...

  4. C#调用C和C++函数的一点区别

    最近做U800电话的二次开发,需要调用厂商的C函数库来打电话,后来想加入通话录音功能,但发现程序默认生产的WAV文件过大,又找了个WAV转MP3的C++函数库程序,出了点问题.下面是转MP3的程序接口 ...

  5. WindowsForm如何实现类似微软project软件的甘特图?

    在管理软件研发过程中,特别是涉及项目管理或者生产计划方面,都需要一款类似微软project的控件对项目下的分解任务进行图形展示(甘特图).下面介绍一下在WindowsForm下如何实现类似微软proj ...

  6. pywebsocket的搭建

    Python可以搭建pywebsocket(Web服务器,python websocket),搭建pywebsocket必须要已经安装了python,点我查看python的下载与安装.在这篇Blog中 ...

  7. Understanding the Uncertain Geographic Context Problem

    "The areal units (zonal objects) used in many geographical studies are arbitrary, modifiable, a ...

  8. android tools使用方式

    我们希望在布局中显示测试的属性,而这个属性不会影响到正式代码,因此我们就需要tools这个命名空间. 首先定义:xmlns:tools="http://schemas.android.com ...

  9. 怎么让一个项目里swift与OC可以兼容混合开发?

    在苹果推出了swift语言之后,很多人担心OC很快会被取代,但是苹果方面表示2年内不会摒弃OC.但现在也快了啊.有的开发团队已经开始基于swift开发,但是有很多旧的框架还没来得及用swift写出来, ...

  10. iOS中sqlite版本号

    https://github.com/yapstudios/YapDatabase/wiki/SQLite-version-(bundled-with-OS) https://github.com/y ...