QT学习第1天

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声明的函数)

1 class A{
2 public slots:
3     void func(void);//槽函数
4 };

(6)Signals(信号函数,用signal声明的函数)

1 class A{
2 signal:
3     void sig_func(void);//信号函数
4 };

(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.建立信号和槽函数连接

1 QMetaObject::Connection QObject::connect(
2     const QObject *sender, const QMetaMethod &signal,
3     const QObject *receiver, const QMetaMethod &method,
4     Qt::ConnectionType type = Qt::AutoConnection
5 );

sender:发送信号的对象指针(QObject的子类对象)

signal:信号函数

receiver:接收信号的对象指针

method:槽函数

<<案例>>创建一个按钮对象和一个标签对象,点击按钮关闭标签

QPushButton btn(…);

QLabel label(…);

QObject::connect(&btn,SIGNAL(clicked()),&label,SLOT(close()));

时间: 2024-10-21 06:15:06

QT学习第1天的相关文章

Qt学习之路

  Qt学习之路_14(简易音乐播放器) Qt学习之路_13(简易俄罗斯方块) Qt学习之路_12(简易数据管理系统) Qt学习之路_11(简易多文档编辑器) Qt学习之路_10(Qt中statusBar,MessageBox和Timer的简单处理) Qt学习之路_9(Qt中Item Widget初步探索) Qt学习之路_8(Qt中与文件目录相关操作) Qt学习之路_7(线性布局和网格布局初步探索) Qt学习之路_6(Qt局域网聊天软件) Qt学习之路_5(Qt TCP的初步使用) Qt学习之路

QT学习之路(1):彩票绝对不中模拟器

//============================================//绝对不中,彩票开奖模拟器#include "mainwindow.h"#include "ui_mainwindow.h"#include <QHash>#include <QDebug>MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::M

qt学习(三):鼠标图标改变

qt学习 (三):鼠标图标改变 当你进入一个美好的qt软件场景,比如游戏,电脑的黑白图标会让程序逊色不少, 1改图标要加光标的头文件, 2 载入光标图, 3 再设置改光标就可以了 1在头文件中加 #include <QtGui>  //光标类的父类 //再在public成员中声明换的函数void keyPressEvent(QKeyEvent *k); //声明按键换图的函数         .h文件    --注意头文件和声明 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Qt学习总结-ui篇(二)

qccs定义圆角 border-radius:10px; 如果想给特定位置定义圆角,如: 左上角:border-left-top-radius:10px; 右下角色:border-right-bottom-rasius:10px; 半透明效果 只需要在css中使用rgba(100,100,100,40)这种形式来表示颜色即可. 为可执行文件添加图标 1.新建文件:finename.rc 文件名无所谓,只要后缀为rc就可以. 2.编辑新建的文件,输入以下内容: IDI_ICON1 ICON DIS

【qt学习005】搞不明白的布局

记录一下自己在布局这一章遇见的各种狗屎问题. 问题主要出现在布局最后一节:综合布局实例,类似于一个qq管理器的界面(见下图1).看见这个时,打算动手实现一下,于是开始写代码,写着写着发现不知道怎么写了,遇见一些无法解决的问题(问题中描述的布局类之间的关系见下图2): 1. 最底层应该使用哪一类? 2. 怎么将QListWidget加入到最底层? 3. 怎么往QStackWidget加入三个页面,每个页面代表不同的信息? 4. 怎么将QHBoxLayout中的CLOSE按钮连接到退出函数,要完整地

【Qt学习笔记】13.拖放技术:Drag & Drop

1.接受拖放 Drag & Drop 是一个界面操作,用于在两个窗口间传递数据. Drag Source: 拖放源窗口 Drag Target: 拖放目标窗口 拖放操作: 1.在源窗口:选中目标,按下鼠标,移动,拖至目标窗口(Drag) 2.在目标窗口:取消鼠标,到指定位置,松开鼠标(Drop) (按下ESC取消操作) MIME: MIME(Multipurpose Internet Mail Extensions)被传递的数据以MIME格式传送,它是多组type-data数据:(type0,

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

Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学习之路:Qt学习之路(7):创建一个对话框(上)这个程序.编译出现 invalid use of incomplete type ‘class QPushButton’ findButton->setEnabled(!text.isEmpty()); ^ In file included from

qt学习(四)主窗选钮,显示新窗口。

游戏有选区这个习惯, 当然,我特指<冒险岛>了,有的时候就是打开一个主屏幕上五个按钮让你点击进入, 甚至有的时候进去了还要选哪个频道,游戏服务器都得分区,频道来完成功能.现在我们先进入想选的区,不需要的可以看以后的登陆窗口了. 这一次的主要功能是完成选区,选完进入输入账号界面. 这次用的是一个点完出啦一个所以需要两个窗口,在原有的基础上新建qt设计师界面类.选择dialogwithoutbutton. 把最后一个要显示的当作主界面, 其他的都可以选择dialog模板, 完成以后,画ui界面,

qt学习(一)qt三个文件函数的框架

学到点什么, 而不是复制着什么, 每天敲着别人给的代码,苦涩得改完bug, 就这样一天天的过去, 实质上并没有学到什么, 别人的思想只是拿来借鉴, 你的思想是好是坏都是你的, 不用急着抛弃自己. 从qt看看人家的思路. Qt编程思路: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~` 以下:xxx.h ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~