QT学习宝典笔记.docx
- 文档编号:5268389
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:18
- 大小:26.90KB
QT学习宝典笔记.docx
《QT学习宝典笔记.docx》由会员分享,可在线阅读,更多相关《QT学习宝典笔记.docx(18页珍藏版)》请在冰豆网上搜索。
QT学习宝典笔记
**************光标库*********************
#include
WINDOW*initscr(void)
初始化屏幕,进入cureses模式
返回值:
成功则返回指向stdcur的结构,失败退出程序
intendwin(void)
退出curses模式
成功返回OK,失败返回ERR
intprintw(char*format,...)
向屏幕打印字符串,类似printf().
intrefresh(void)
刷新物理屏幕
intbeep(void)
终端发出一声嘀
interase(void)速度快,可靠性低
intclear(void)速度低,可靠性高,-----均使用这一种
intmove(intnew_y,intnew_x)
移动光标到指定坐标,参数就是屏幕的坐标
move()不发生物理移动,所以期望快速看到光标变位置应该立刻调用一次refresh(void)
intgetch(void)
功能:
从键盘取一个字符,类似于getchar()
intgetstr(char*string)
功能:
从键盘取字符串,类似于gets()
intscanw(char*format,...)
功能:
按指定格式取键盘输入,类似于scanf()
#include
intisatty(intfiledes)
功能:
判断描述符指向是否终端设备
返回值:
若为终端设备为1(真),否则为0(假)
#include
char*ttyname(intfd)
功能:
终端设备名
返回值:
返回指向一个字符串的指针,该字符串中含有以null结束的该文件描述字相连的终端文件名。
若些文件描述字不与终端相边
cddev
lstty?
int
intsetupterm(char*term,intfd,int*errret)
功能:
设备终端的类型
返回值:
成功,setupterm函数会返回常量OK,如果失败则会返回ERR。
如果erret设置为一个空指针,函数执行失败时就会输出一个诊断信息并且退出程序。
参数:
term:
终端类型。
fd:
写入终端所用的批开的文件描述
#include
inttigetnum(char*capname);
功能:
返回终端数值指标。
返回值:
成功返回指标值;失败返回-2
参数:
capname指标名。
例如lines,cols
注意:
调用该函数前应先调用下面的语句。
***********************************************************************************
密码如何删除
if(i>0&&password[i]==127)//字符是退格建,如不加i>0表示没有输入,就直接按空格
{
password[i]=0;//清空它
i--;
move(9,20+i);//光标移到上一次所在的位置
printw("\b");//退格,用空白覆盖*号
continue;//结束当前一次的循环.
}
a.out>temp/log------------------看箭头的方向,写入temp/log中
wc *******************内存管理****************** #include void*malloc(sizt_tsize) 分配长度为size字节的内存块 返回值: 如果分配成功则返回指向被分配内存的指针,否则返回空指针,当内存不再使用时,应使用free()函数将内存块释放 #include voidfree(void*ptr_to_memory) 功能: 释放ptr_to_memory指向的内存 #include char*getenv(constchar*name) 功能: 取指定环境变量name对应的内容。 返回值: 成功则返回变量内容,失败返回NULL #include intputenv(constchar*string) 功能: 设置环境变量。 格式为"name=value" 成功返回0,失败返回-1 intmain() { char*ss=getenv("PATH"); printf("%s\n",ss); inta=putenv("tanjie=ami"); printf("%d\n",a); printf("%s\n",getenv("tanjie")); uid_tuid=getuid(); printf("UID: %d\n",uid); char*login=getlogin(); printf("LOGIN: %s\n",login); } #include #include uis_tgetuid(void) 功能: 返回当前用户的UID char*getlogin(void) 功能: 返回当前用户登录名 #include #include structpasswd*getpwuid(uid_tuid); 取口令数据库结构 成功返回口令数据库的结构,失败返回NULL structpasswd*pw=getpwuid(getuid()); pw->pw_name,pw->pw_uid,pw->pw_gid,pw->pw_dir,pw->pw_shell; 结果: name=hfsd1006,uid=1002,gid=1002,home=/home/hfsd1006,shell=/bin/bash rootpasswdentry: structpasswd*getpwnam(constchar*name) 功能: 取口令数据库结构 成功返回口令数据库结构,失败返回NULL structpasswd*pw=getpwuid("root"); pw->pw_name,pw->pw_uid,pw->pw_gid,pw->pw_dir,pw->pw_shell; 结果: name=root,uid=0,gid=0,home=/root,shell=/bin/bash #include intgethostname(char*name,size_tnamelen); 功能: 获取计算名。 #include intuname(structutsname*name); 功能: 获得计算机详细信息 charcomputer[256]; structutsnameuts; gethostname(computer,255) uname(&uts) 日志管理 #include voidsyslog(intpriority,stringmessage,...); 功能: 函数将message字符串写到系统记录中,参数priority为优先级和用户标识码 priority的内容可以是: LOG_EMERG: 紧急情疻。 LOG_ALERT: 应该被立即改正的问题,如系统数据库被破坏 LOG_CRIT: 重要情况,如硬盘错误 LOG_ERR: 错误 LOG_WARNING: 警告信息 LOG_NOTICE: 不是错误情况,是可能需要处理 LOG_INFO: 普通信息 LOG_DEBUG: 包含情报信息,通常只在调试一个程序时 LOG_USER: 来自于用户 ################编程规范#################### 排版: 缩进4格 程序块之间,变量说明之后必须加空行 一行的代码太长了(>80),下一行要空开多个TAB。 要在低优先级的操作符处划分。 低优先级的操作符放在下一行首 循环,判断也同上。 func(fa()+fb() fc()+fd() fe() ); 函数或过程的开始要缩进 花括号上下对齐 逗号,分号后加一个空格如,inta,b,c; 说明性文件(.h.inc.def.cfg)头部应该注释, addrenivebeginendcreatdestroy insertdeletefirstlastgetrelease incrementdecrementputget *****************************QT第一天****************************************** QT类库,开发工具,开发环境(14年) 二十个左右的类 QT简介: 跨平台的应用程序和UI(用户接口)框架,完全基于C++,增加一些XML语言,之所以跨平台,因为它做了高度的抽象。 用固定的类与方法实现多线程,源码可移植(诺基亚收购了QT,缺点: 与以前的版本不兼容) QT可以做什么: 桌面系统,嵌入式设备,消费的电子设备,高级的GUI开发,Linux设备开发 (EeePC上网本,及为省电可用十几个小时,) (一些开源项目: KDEKOFFIC,VLC媒体播入器,Amarok2Marble) QTE,QTOPIA: QT/Embedded: QT嵌入版, Qtopia: 可以认为是基于QT/E库的一个嵌入式Linux桌面环境,同时又为开发者为嵌入式设备编写程序提供了一个面向对象的API。 QTE是一个基础的类库,面QTOPIA是基于QTE基础上开发的一套应用程序(qtopia2应用基于qte2.3x的) 架构: Qte是基于Linux系统的 Qtopia Qt/Embedded Framebuffer LINUX QT/QTE比较: 应用源代码 Qt的API(类库) Qte 侦缓冲 Linux内核 Arm开发版上,只需要有一个内核,为方便测试可以有一个很小的文件(放QTE开发环境,和程序) QTSDK完整的开发环境: 版本4.6.3需要一个框架 QTSDKforWindows下载Window的Q库t4.6.3 QTQTSDKforLinux/x11下载Linux/X11的Qt库4.6.3 下载嵌入式Linux的Qt库4.6.3 要在sdk中配置框架, SDK的结构如下: classlibrary如下: Developmenttools(开发工具) (corexml)cross-platformIDE (GuiMultimedia)guihelp (webkitdatabase)118nToolBuittools (graphicvinetwork) (scriptiingunitTests) (OpenglBenchmarking) 交叉平台的支持: (如WindowsLinux) 版权QTSERVICES(QT所类要的一些服务,就是一些库,简单的就在IDE中就可以) 项目名.pro文件: 是项目的管理文件 引用了哪些库,及所括文件 ui文件不能编译,它是XML配置文件 容器: 面象对象的的事件驱动 属性 objectName: 对象名,有一个默认的 改名方案pButton_类及功能是什么如pButton_ok,pButton_cancel font字体 cursor光标 text: 显示按钮上的字 信号signal与槽slot 对象间通读分两种 1回调。 回调是指一个函数的指针,如果希望一个处理函数通知你做一些事件,可以把另一个函数的指针传递给处理函数。 处理函数在适当的时候调用了回调,回调不是类型安全的 2,信号和槽,一个事件发生时,信号被发身。 Qt的窗口部件有很多预定义的信号,槽就是一个可以被调用处理特定信号的函数。 Qt的窗口部件又很多预定义的槽,通常我们可以加入自已的槽(槽是类里的一个抽象方法)这样就可以处理感兴趣的信号,信号和槽的机制是类型安全的。 一个类中可以有对象,信号和槽 connect(Object1,signal1,Object2,slot1);对象1的信号发给了对象2的槽 connect(Object1,signal1,Object2,slot2);//一个信号可以连接到多个槽 //若干个对象也可以连接到一个槽 QT典型类 classFoo: publicQObject//定义一个QT类继承整个QT类的一个基类 { Q_OBJECT//这是一个宏 public: Foo();//构造 intvalue()const{returnval;}//常成员函数 publicslots: //槽 voidsetValue(int); signals: //信号 voidvalueChanged(int);//发射了一个信号 private: intval;//这是一个信号的值 } QT类中发送信号的方法 voidFoo: : setValue(intv) { if(v! =val)//避免发给自已进入死循环 { val=v; emitvalueChanged(v);//发射信号 } } 连接信号和槽- Fooa,b; connect(&a,SIGNAL(valueChanged(int)),&b,SLOT(setValue(int))); //宏里边写一个信号valueChanged(int),宏里边有一个槽setValue(int) b.setValue(11);//槽就是一个成员方法,可被这样调用此时b=11a里不知什么值 a.setValue(79);//a==79,b==79 b.Value(); 注意参数可为各种类型,但信号与对应的槽要类型一致 槽的访问权限 publicslots: 区包含了任何信号都可以相连的槽。 这对于组件来说非常有用,你生成许多对象,它们互相并不知道,把它们的信号和槽连接起来。 这样信息就可以正确传递,并且就像一个铁咱模型。 把它打开然后让它跑起来。 protectslots: 区所含之后这个类和它的子类的信号才能连接槽。 这就是说这些槽只是类的实现的一部分,而不是它和外界的接口 privateslots: 区包含了之后这个类本身的信号可以连接的槽。 这就是说它和这个类是非常紧密的甚至它的子类都没有获得连接权利这样的信任。 QT类库 窗口部件,数据库,日期与时间,拖放环境,事件,非GUI的类,图形和打印,图像处理,布局管理,输入输出各网络主窗口和相关类,杂项,多媒体,插件类,标准对话框,线程类,窗口部件外观 QObject: 类 #include QObject类是所有Qt对象的基类。 QObject是Qt对象模型的中心,这个模型的中心特征就是一种用于无缝对象通讯的被叫做信号和槽的非常强大的机制,你能够使用connect()信号和槽连接起来并且可以用disconnect()来破坏这种连接,为了避免从不结束的通知循环, QObject继承关系 QCoreApplicationQWidgetQLayout QApplicationQwidgetQB .... 可以 QObject*pb=newQPushButton("test");//不用是直接基类 QObject boolQObject: : connect(constQObject*sender,constchar*signal,constQObject*receiver,constchar*method,Qt: : ConnectionTypetype=Qt: : AutoConnection)[static] //static表示发送者 把从sender对象发送的signal和receiver对象中的method连接起来,并且如果连接成功返回真,否则返回假。 必须在说明signal和method的时候使用SIGNAL()和SLOT()两个宏 例如: QLaber*laber=newQLabel; QScrollBAR*scrollBar=newQScrollBar; QObjectconnect(...); QObject类 boolQObject: : disconnect(constOObject*sender,constchar*signal,constQObject*receiver,constchar*method)[static] 取消从sender对象发送的signal和对象receiver中的method 1,取消连接一个对象的信呈怕任何事物 disconnect(myObject,0,0,0); 2,取消连接一个特定信号的任何事物 disconnect(myObjectSIGNAL(mySignal()),0,0) 3,取消一个特定接收者的所有连接 disconnect(myObject,0,myReceiver,0) QObject: : disconnect() O可以用做一个通配符,意义可能分别为任何信号,任何接受对象“或者”一个接受对象中的任何槽 sender不能为O signal为O,它取消所有和这个对象的信号连接的receiver和method,如果不是只由特定信号被取消联接。 receive为O,它取消连接到signal的任何事物,如果不是,只有receiver中的槽被取消连接 method为O,它取消连接reciver的任何事特,如果不是,只有名为method的槽被取消联接。 boolQObject: : inherits(constchar*clname) 如果这个对象是继承的clname的类的实例,并且clname继承QObject那么返回值真,否则返为假 实例 QTimer*t=newQTimer//QTimer;继承QObject t->inherits("QTimer");//返回TRUE t->inherits("QObject");//返回TRUE t->inherits("QAbstractButton");//返回FALSE boolQObject: : isA(constchar*clname) 如果这个对象是clname类的实例,返回真,否则返回假。 如: QTimer*t=newQTimeer;//QTimer继承QObject t->isA("QTimer");//返回TRUE t->isA("QObject");//返回为FALSE QObject boolQObject: : isWidgetType() 如果这个对象是一个窗口部件,返回真,否则返回假 调用这个函数等于调用inherits("QWidget"),但这个函数要快很多 QString floatQString: : toFloat(bool*ok=0)const doubleQString: : toDouble(bool*ok=0)const 返回由这个字符串转化的double值 如果转化发生错识误,*ok被设置为假(除非ok为0,这是默认的)并且0被返回,否则*ok被设置为真 QStringstring("12345.6"); longQString: : toLong(bool*ok=0,intbase=10)const shortQString: : toShort(bool*ok=0,intbase=10)cost intQString: : toInt(bool*ok=0,intbase=10)const 返回由这个字符串转化的int值,是基于base的,默认为10并且必须由2到36之间 QStringstd("FF"); boolok; inthex=str.toInt(&ok,16);//hex==255,ok=TRUE intdec=str.toInt(&ok,10);//dec=0,ok==FALSE 作业: ******************************QT第二天**************************************** #include QWidget类是所有用户界面对象的基类, 窗口部件是用户界面的一个原子。 它从窗口系统接鼠标,键盘和其它事件,并且在屏幕上绘制自已的表现。 每一个窗口部件者是矩形。 一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。 如果由操作系统或类库提供的不用重画,其它都用重画。 缺点是极度浪费资源,和内存。 速度很慢 QWidget被QAbstractButton,QFrame,QDialog,QComboBox,QDataBrowser,QDataView,QDateTimeEdit,QDesktopWidget,QDial, .......等类继承 QWidget属性----------------属性名: 类型 acceptDrops: bool窗口部件中放下事件是否有效 windowTitle: QString窗口标题 cursor: QCusrsor窗口部件的光标外形---------------类型是构造出来的 focus: constbool窗口部件(或者它的焦点代理)是否得到键盘输入焦点(只读) font: QFont: 窗口部件当前的字体集 (如果是对容器设置字体或字体大小,它里面的子类会继承这个容器的设置) height: constint不包括窗口框架的窗口部件的高度(只读)----按象素来算 isActiveWindow: constbool窗口部件或者它的一个子对象是否是活动窗口(只读) 不一定在最前面的对话框就有输入焦点 QWidget的其它属性 maximumHeight: int窗口部件的最大高度 maximumSize: QSize窗口部件的最大大小 maximumWidth: int窗口部件的最大宽度 minimized: constbool窗口部件是否是最小化的。 (变为图标了)(只读) minimumHeight: int窗口部件的最小高度 minimumSize: 窗口
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QT 学习 宝典 笔记