qtday01

 

qt第一天:
1.qt与c++有关系,与c没有关系。
2.里面的类库都是以q开头的。
 
共3天:
 1.qt基础 2.c++编程方式 3.


1.是一个基础c++语言的框架,专注于图形界面。纯面向对象,跨平台的框架:手机,unix/linux .
2.05年qt4的发布,现在的技术都是基于qt4的。08年被诺基亚收购,09年把源代码开放。
3.面向过程:函数+数据结构。 函数封装代码。(一个函数不应该超过200行有些公司有规范) 结构体封装数据。
  面向对象:大封装:类:封装数据+封装代码
4.跨平台:标c,标c++才能跨。
5.开源:qt. 05年之后才开源。

二qt编程环境  (龙腾青云)
1.qt工具:$QTDIR/bin  ${QTDIR}/bin  这是一个环境变量:保存qt的安装目录 /opt/qt
2.过英语4,6级:读阅读理解即可
3.assistant 帮助文档,以浏览器组织的。看最后一项即可。类似于msdn
  assistant_adp 后台用的
  designer 设计器  用来设计界面。以ui为后缀的文件,对应一个界面图形
  moc 也是后台跑的程序。moc做转换用的:转换信号和槽函数。具备一些特定特性的函数,就是一些函数罢了。
  这是qt的核心:信号和槽
  qmake 最重要的一个工具:2个主要的功能:
 1.项目的源代码组织成项目描述文件.pro结尾的。project
 2.把pro文件生成makefile  . makefile是unix/linux下的组织项目的指令。
  make工具Linux独有的工具是操作系统的提供:把makefile生成目标。
  qtconfig:qt配置文件:字体,显示
  uic:也是一个重要的牛的工具。把ui文件转换成.h文件
  xmlpatterns:每种语言对xml都有解析支持。所以这个东西是qt用来解析xml的工具。
 xml:1.存储数据 2.配置文件
*使用端口最好大于1500,因为小的有冲突呗。
 
三:qt的头文件
c++中去加载c的标准头文件,把.h去掉,前面加c  .<ostream>  <cstdio>  #include <pthread.h>
qt:头文件和类名完全相同。#include <QApplication>  ==><qapplication.h>只是为了符合c++标准规范罢了。
include文件夹按模块划分:QtCore:qt核心库 QtGui界面  QtNetwork网络包 QtopenGL 建模 QtScript 脚步支持 Qtsql数据库支持 qtxml xml的支持
 core gui sql xml network 就不要加上qt了。类似于动态库去掉lib一样。
库:libQtCore.so libQtGui.so
QtCore文件夹:QApplication -> #include "qapplication.h"

qt的库:$QTDIR/lib 按模块实现的,使用时候按模块来加载他, core gui sql xml nework
 qt默认加载2个库:core gui
 头文件不会默认加载,所以开发的时候要自己加载头文件。

环境变量:
QTDIR  /opt/qt
PATH   /opt/qt/bin  $QTDIR/bin:$PATH  --> linux  %QTDIR%/bin;%PATH%--->windows

QMAKESPACE:生成不了makefile,可能跟它有关系。 makefile生成时系统相关的。他是控制不同系统的编译器。
//提供了各种系统  linux g++ ; aix g++  ; hpuix g++ ; win32 g++
 把值配置成:/opt/qt/mkspaces/win32-g++ 即可在windows下面生成


四:例子:
1.qt中的main函数必须要有参数,否则跑起来:int main(int argc,char **argv){
 QApplication app(argc,argv);
 QLabel qlab("hello qt! ");//在QtGui模块中,要引入#include <QLable>
//qt的组件默认是不显示的,否则屏幕会产生抖动效果,所以qt所有组件必须show
 qlab.show();
 return app.exec();进入事件循环,不会立即停止罢了。
}


shift+zz退出vi.
qmake -project //生成.pro文件 :hello.pro
qmake hello.pro //如果有1个pro就可以不写.pro  . 生成Makefile
make -> 生成了可执行文件 。就去执行 ./hello(请加上./)


编程步骤:
1.新建文件夹 hello
2.在hello中写一个hello.cpp //对应的是项目名:即文件夹名称
3.qmake -project 生成pro文件
4.qmake xxx.pro
5.make 生成目标
6.执行它即可./hello

rm hello Makeifle hello.o hello.pro 重新生成之前。 这些东西都要删除最好。小心乱了。
如果文件名和项目名称不一致,那么makefile的时候会报错,但是我们不理会他也可以正常的工作罢了。

下午:
解决字体问题:这就是qt的配置问题
 qt->bin/qtconfig 配置问题--fonts -> family -> luxi-serif
 然后一定要ctrl+s来保存即可。
解决乱码问题:
 选择编码规则:utf-8 gbk gb23212
 按什么编码,就按什么解码即可。 qt中有个类帮我们解决这个问题:QTextCodec
 
 帮助文档:公共的类型,公开的函数,静态函数,保护函数:为子类而生的;c++中的关键字都是小写的。信号函数 signals 槽函数slots
 
 解决步骤:
  1。得到编码对象QTextCodec *obj= codecForName("编码");
  2。设置编码对象 setCodecForTr(obj);
  3。用编码对象对程序中的字符串进行翻译 tr("要显示的字符串","编码")
 
 代码:QTextCodec *coder=QTextCodec::codecForName("gbk");
   QTextCodec::setCodecForTr(coder);
   QObject::tr("你好!!","gbk");//所有类型的基类QObject中的静态方法。#include<QObject>
  
  
  
 qmake -project //用于描述项目的:仅仅和项目中的文件名有关系
 qmake 根据pro文件中的描述生成文件依赖关系的makefile
 make则和代码有关系。所以修改了代码,没有增加文件和改变文件名就直接使用make即可。
  
多看1小时电视,少活21分钟。不要浪费青春。

qsort()排序函数;
函数和函数之间产生关联:1。函数调用函数 2。函数参数是函数指针 3。父子虚函数关系
但是qt中的机制不一样:没有关联也能够影响到。
 qt中信号和槽函数,是解决对象与对象之间调用关系的。 强到这2个对象毫无关系!!也可以。
即高内聚,低耦合。软件应该追求。

注意:qt的组件都是在0,0点出生,多个组件会挡住了。

QObject::connect(信号的发出者指针,信号,接受者,槽);能够把2个没有关系的对象连接起来
,这就是信号和槽的优势:让2个无关系的对象有关系,相互影响呗;
bool connect (const QObject* sender,const char* signal,const QObject* receiver,const char* method,Qt:ConnectionType type=Qt::AutoConnection);

当我需要一个一级指针,我就定义个对象,&取地址即可
当我需要一个二级指针,我就定义这个对象的指针,&去地址即可。

qt默认给每个控件一个窗体!而不是在同一个窗体里面!指定他们一个父窗口,这样就长得像在同一个窗口了。这个时候组件都在0,0位置,相互挡住了。
qtcreator 在诺基亚官网下载qt SDK开发包,双击:qtcreate

qt中,控件是个子窗口,外面这个是父窗口!
当信号和槽函数中出现参数时,信号和槽的参数要匹配
connect(sender,SIGNAL(test(int)),recv,SLOT(tt(int/*左边是什么,这就是什么类型*/)))

带参的:只要写参数类型即可,写多了:错!!!

作业:查信号槽,来使用拖动拉条来改变文本框中的值。

 

 

 

 

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值