Qt学习笔记2
QT学习笔记2:QT中常用函数

QT学习笔记2:QT中常⽤函数⼀、QString转numberQString number(long n, int base = 10)QString number(ulong n, int base = 10)QString number(int n, int base = 10)QString number(uint n, int base = 10)QString number(qlonglong n, int base = 10)QString number(qulonglong n, int base = 10)QString number(double n, char format = 'g', int precision = 6)整形的转换格式都是⼀样的,第⼀个参数是⼗进制要转换的整数,第⼆个参数指定以什么进制来转换,默认是⼗进制,⽐如:QString strNumDec = QString::number(55, 10); //转化成10进制QString strNumHex = QString::number(55, 16); //16进制QString strNumBit = QString::number(55, 2); //2进制第⼆个参数base必须在[2,36]之间,当base为10以外的值时,第⼀个参数n将被视为⽆符号整数。
⼆、number 转 QStringdouble toDouble(bool * ok = 0) constfloat toFloat(bool * ok = 0) constint toInt(bool * ok = 0, int base = 10) constlong toLong(bool * ok = 0, int base = 10) constqlonglong toLongLong(bool * ok = 0, int base = 10) constshort toShort(bool * ok = 0, int base = 10) constQString也提供了⼀系列转换成数值的函数,参数ok指⽰转换是否出错,参数base指⽰当前QString是什么进制,如QString str = "55";bool ok;int numBit = str.toInt(&ok, 2);int numOct = str.toInt(&ok, 8);int numDec = str.toInt(&ok, 10);int numHex = str.toInt(&ok, 16);三、QPixmap加载图⽚并获取图⽚宽和⾼void Dialog::paintEvent(QPaintEvent *){QPainter painter(this);QPixmap pix;//加载图⽚pix.load("D:\\1001.jpg");//获得图⽚的宽和⾼qreal width = pix.width();qreal height = pix.height();//图⽚放⼤两倍pix = pix.scaled(width*2,height*2,Qt::KeepAspectRatio);painter.drawPixmap(0,0,100,100,pix);}四、QString与String转换//QString转换Stringstring s = qstr.toStdString();//String转换QStringQString qstr2 = QString::fromStdString(s);这样虽然能成功,但是会出现中⽂乱码情况。
qt学习笔记

汇文教育;QFil eInfo类1、q filei nfo提供有关文件系统中的,文件的名称和位置信息(路径),它的访问权限,以及它是否是一个目录或符号链接,该文件的大小和最后修改/读取时间也可用。
2、QFil eInFo可以指向一个文件,一个相对或一个绝对文件路径,绝对文件路径开始与目录分隔符“/”或驱动器的规格(除了在UNI X),相对文件名开始有一个目录名或一个文件名,并指定一个相对于当前工作目录的路径.一个绝对路径的一个例子是一个字符串“/tmp /qua ltz”,相对路径可能看起来像“src / fa tlib”,你可以使用这个函数isrel ative()来检查 qfil einfo是否使用相对或绝对路径的文件,你可以调用函数co nvert toabs()转换 qfil einfo的相对路径为绝对路径。
这q filei nfo文件在构造函数中设置或后setfi le(),使用exi sts()看文件是否存在,si ze()得到它的大小。
加速性能,qf ilein fo缓存文件有关的信息,因为文件可以被其他用户或程序更改,甚至由同一程序的其他部分,这个函数refr esh(),刷新文件信息,如果你想关闭一个qfi leinf o的缓存和强制访问文件系统每次请求信息,你可以调用setCa ching(FALS E).文件的类型是获得通过i sfile(),is dir()和isSy mlink()该文件的日期由 crea ted(), las tModi fied() and last Read(),文件的访问权限由isRe adabl e(),isWri table() an d isE xecut able()获得。
Qt学习资料

Qt学习资料1. 介绍QML是一种描述语言,主要是对界面效果等的一种描述,它可以结合javaScript来进行更复杂的效果及逻辑实现。
比如做个游戏,实现一些更有趣的功能等2. 简单的例子import Qt4.7Rectangle{width:200height:200color:"blue"}代码是绘制一个蓝色的矩形,宽200 高200,import包含一个qt4.7的包3.基本元素的介绍(自己翻译意思会有出入,敬请见谅)基本可视化项Item 基本的项元素在QML中所有可视化的向都继承他Rectangle 基本的可视化矩形元素Gradient 定义一个两种颜色的渐变过程GradientStop 定义个颜色,被Gradient使用Image 在场景中使用位图BorderImage(特殊的项) 定义一张图片并当做边界AnimatedImage 为播放动画存储一系列的帧Text 在场景中使用文本TextInput 显示可编辑为文本IntValidator int 验证器DoubleValidator double 验证器RegExpValidator 验证字符串正则表达式TextEdit 显示多行可编辑文本基本的交互项MouseArea 鼠标句柄交互FocusScope 键盘焦点句柄Flickable 提供一种浏览整张图片的一部分的效果,具体看例子Flipable 提供一个平面,可以进行翻转看他的前面或后面,具体看例子状态State 定义一个配置对象和属性的集合PropertyChanges 使用一个State描述属性的改变StateGroup 包含一个状态集合和状态变换ParentChange 重新定义父集,也就是换个父节点AnchorChanges 在一个状态中改变anchors动画和变换Behavior 默认的属性变换动画SequentialAnimation 对定义的动画串行播放ParallelAnimation 对定义的动画并行播放PropertyAnimation 属性变换动画NumberAnimation 对实数类型属性进行的动画Vector3dAnimation 对QVector3d进行的属性ColorAnimation 颜色进行的变换动画RotationAnimation 对旋转进行的变换动画ParentAnimation 对父节点进行变换的动画,改变绑定的父节点AnchorAnimation 对anchor 进行改变的动画PauseAnimation 延迟处理SmoothedAnimation 允许属性平滑的过度SpringAnimation 一种加速的效果PropertyAction 允许在动画过程中对属性的直接改变ScriptAction 允许动画过程中调用脚本Transition 在状态变换中加入动作变化工作中的数据Binding 在创建的时候绑定一些数据到一些属性ListModel 定义链表数据ListElement 定义ListModel的一个数据项VisualItemModel 包含可视化项(visual items)到一个view中,相当是一个容器VisualDataModel 包含一个model和一个delegate,model包含需要的数据,delegate设计显示的项的信息,具体的去看例子Package 他的目的是把VisualDataModel共享给多个view,具体还要学习XmlListModel 特殊的一个模式使用XPath表达式,使用xml来设置元素,参考例子XmlRole XmlListModel的一个特殊的角色视图ListView 提供一个链表显示模型视图GridView 提供一个网格显示模型视图PathView 提供一个内容沿着路径来显示的模型Path 定义一个PathView使用的轨迹PathLine 定义一个线性的轨迹PathQuad 定义一个二次贝塞尔曲线的轨迹PathCubic 定义一个三次贝塞尔曲线的轨迹PathAttribute允许绑定一个属性上,具体看例子PathPercent 修改item分配的轨迹不是很明了其中的意思WebView 允许添加网页内容到一个canvas上定位器Column 整理它的子列(纵)Row 整理它的子行(横)Grid 设置它的子到一个网格上Flow 目的是不让他的子项重叠在一起实用Connections 明确连接信号和信号句柄Component 封装QML items 想一个组件一样Timer 提供时间触发器QtObject 基本的元素只包含objectName属性Qt qml全局Qt object提供使用的枚举和函数WorkerScript允许在QML使用线程Loader 控制载入item或组件Repeater 使用一个模型创建多个组件SystemPalette 为Qt palettes提供一个通道FontLoader 载入字体根据名字或URLLayoutItem 允许声明UI元素插入到qtGraphicsView 布局中变换Scale 分派item 缩放行为Rotation 分派item 旋转行为Translate 分派item 移动行为4.基本元素的使用例子1. Item位置是0,0 宽高分别是200Item{x:0;y:0;width:200;height:200;}2. Rectangle位置是:0,0宽高分别是200,颜色是红色Rectangle{x: 0; y: 0;width: 200; height: 200;color: "red"}3.Gradient GradientStop分别在总高度的0 颜色红色总高度的1/3 黄色总高度的1是绿色Rectangle{width:100;height:100gradient:Gradient{GradientStop{position:0.0;color:"red"}GradientStop{position:0.33;color:"yellow"}GradientStop{position:1.0;color:"green"}}}4.Image设置一张图片Image{source:"../Images/button1.png"}5.BorderImage他将一张图片分成9部分当图片进行缩放的时候A.1 3 7 9 位置的都不会进行缩放B. 2 8将根据属性horzontalTileMode 进行缩放C.4 6 将根据属性verticalTileMode 进行缩放D.5 将根据属性horzontalTileMode 和verticalTileMode 进行缩放BorderImage{width:180;height:180//分割1~9块的4个点是根据border设置的坐标来实现的//本别是距离坐标上边右边下边的距离border{left:30;top:30;right:30;bottom:30}horizontalTileMode:BorderImage.StretchverticalTileMode:BorderImage.Stretchsource:"../Images/button1.png"}6.AnimatedImage主要用于播放gif图片Rectangle{width:animation.width;height:animation.height+8AnimatedImage{id:animation;source:"animation.gif"}Rectangle{property int frames:animation.frameCountwidth:4;height:8x:(animation.width-width)*animation.currentFrame/frames y:animation.heightcolor:"red"}}7.Text显示文本(具体的其他设置请看文档)Text{text:"text"}8.TextInput下面是设置一个输入文本框,框中的字符串是Text, 并设置鼠标可以选择文本TextInput{text:"Text"selectByMouse:true;//鼠标可以选择}9.IntValidator int 型验证器,和输入框结合后就是只能输入整型数据T extInput{//最高可以输入100,最低输入10IntValidator{id:intval;bottom:10;top:100;}width:100;height:20;text:"";//使用校验器validator:intval;}10.DoubleValidator只能输入浮点数TextInput{//最高可以输入100,最低输入10decimals最多有多少位小数//notation表示是使用科学计数法还是(默认),还是直接的小数当获取里面的数据DoubleValidator{id:intval;decimals:4;bottom:10;top:100;nota tion:DoubleValidator.StandardNotation}width:100;height:20;text:"";//使用校验器validator:intval;}11.RegExpValidator使用正则表达式TextInput{//使用一个正则表达式来控制输入的字符串///^[a-zA-Z]{1}[0-1]{0,2}[a-z]{1,3}$/表示开始位置必须是一个大写或小写字母//接下来是0~2个的数字而且是0或1,在接下来是1~3个的小写字母RegExpValidator{id:intval;regExp:/^[a-zA-Z]{1}[0-1]{0,2}[a-z]{1,3}$/;}width:100;height:20;text:"";//使用校验器validator:intval;}12.TextEdit显示一段hello world的html文本和TextInput相同TextEdit{width:240text:"Hello World!"font.family:"Helvetica"font.pointSize:20color:"blue"focus:true}13.MouseArea主要是用来判断鼠标事件的区域Rectangle{x:0;y:0;width:100;height:100;Rectangle{id:mousrectx:20;y:20;width:20;height:20;color:"blue"MouseArea{//使用父的区域作为鼠标判断的区域及x:20;y:20;width:20;height: 20;anchors.fill:parent;//但鼠标按下后mousrect变成红色,当鼠标松开后变成蓝色onPressed:{mousrect.color="red";}onReleased:{mousrect.color="blue";}}}}14.FocusScope不是很清楚说的什么,好像是说同一个时刻只有一个item有焦点15.Flickable显示一个200x200的框,框中显示图片上200x200的部分Flickable{width:200;height:200//设置使用图片的宽高,而现实的是200x200的现实框contentWidth:image.width;contentHeight:image.heightImage{id:image;source:"../Images/need.png"}}16.Flipable包含两个面,一个前面,一个后面,实现一个控件前后的翻转效果,并且在后面可以添加一些控制Flipable{id:flipablewidth:240height:240property int angle:0property bool flipped:falsefront:Image{source:"front.png"}//前面back:Image{source:"back.png"}//后面//旋转动画前后面交换transform:Rotation{origin.x:flipable.width/2;origin.y:flipable.height/2axis.x:0;axis.y:1;axis.z:0//rotate around y-axisangle:flipable.angle}states:State{name:"back"PropertyChanges{target:flipable;angle:180}when:flipable.flipped}transitions:Transition{NumberAnimation{properties:"angle";duration:1000}}MouseArea{anchors.fill:parentonClicked:flipable.flipped=!flipable.flipped}}17.State//当鼠标按下后改变myRect的颜色Rectangle{id:myRectwidth:100;height:100color:"black"MouseArea{id:mouseAreaanchors.fill:parentonClicked:myRect.state=='clicked'?myRect.state="":myRect. state= 'clicked';}//设置状态states:[State{name:"clicked"PropertyChanges{target:myRect;color:"red"}}]}18.PropertyChanges//当鼠标按下后改变状态//状态里面的属性改变包含了文本和颜色的改变Text{id:myTextwidth:100;height:100text:"Hello"color:"blue"states:State{name:"myState"//当这个状态被设置的时候,将改变myText的文本和颜色PropertyChanges{target:myTexttext:"Goodbye"color:"red"}}MouseArea{anchors.fill:parent;onClicked:myText.state='myS tate'} }19.StateGroup一个状态组中可以包含很多的状态和变化,而状态也可以和变换绑定. 20.StateChangeScript在状态中可以对脚本中的函数进行调用// Sc.jsfunction changeColor() // 返回蓝色{return "blue";}// test.qmlimport"Sc.js"as CodeRectangle{id:rectwidth:50;height:50color:"red"MouseArea{anchors.fill:parentonClicked:rect.state="first" // 鼠标按下改变状态}states:State{name:"first"; StateChangeScript{name:"myScript";script:rect.color=Code.changeColor();}}}21.ParentChang把指定的item换一个item父节点Item{width:200;height:100Rectangle{id:redRectwidth:100;height:100color:"red"}//本来blueRect的父节点是Item当鼠标按下后他被设置到redRect上Rectangle{id:blueRectx:redRect.widthwidth:50;height:50color:"blue"states:State{name:"reparented"//改变父节点ParentChange{target:blueRect;parent:redRect;x:10;y:10}}MouseArea{anchors.fill:parent;onClicked:blueRect.state="re parented"} }}22.AnchorChangesRectangle{id:windowwidth:120;height:120color:"black"Rectangle{id:myRect;width:50;height:50;color:"red"}states:State{name:"reanchored"AnchorChanges{//改变myRect的anchors属性target:myRectanchors.top:window.topanchors.bottom:window.bottom}PropertyChanges{target:myRectanchors.topMargin:10anchors.bottomMargin:10}}//鼠标事件MouseArea{anchors.fill:parent;onClicked:window.state="rea nchored"} }23.BehaviorRectangle{id:rectwidth:100;height:100color:"red"//针对宽度的动画Behavior on width{NumberAnimation{duration:1000}}MouseArea{anchors.fill:parentonClicked:rect.width=50}}24.SequentialAnimation串行播放多个动画Rectangle{id:rect1width:500;height:500Rectangle{id:rect;color:"red"width:100;height:100//串行播放多个动画,先横向移动,在纵向移动SequentialAnimation{running:true;NumberAnimation{target:rect;properties:"x";to:50;duration: 1000}NumberAnimation{target:rect;properties:"y";to:50;duration:1000 } }}}25.ParallelAnimationRectangle{id:rect1width:500;height:500Rectangle{id:rect;color:"red"width:100;height:100//并行播放动画,同时横向和纵向移动ParallelAnimation{running:true;NumberAnimation{target:rect;properties:"x";to:50;duration: 1000}NumberAnimation{target:rect;properties:"y";to:50;duration:1000 } }}}26.PropertyAnimationRectangle{id:rectwidth:100;height:100color:"red"。
QT知识点

QT知识点1、QPallete调色板类QPallete提供了颜色角色(color roles)概念,是指当前GUI界面中颜色的职责,通过枚举变量QPalette::ColorRole来定义,比较常用的颜色角色有:QPalete::Window,通常指窗口部件的背景色;QPalette:WindowT ext,通常指窗口不见的前景色;QPalette::Base,指文本输入窗口部件(比如QtextEdit,QLinedit等)的背景色.QPalette::Text,与QPalette::Base一块使用,指文本输入窗口部件的前景色;QPalette::Button,指按钮窗口部件的背景色;QPalette::ButtonText,指按钮窗口部件的前景色.setPalette( QPalette( QColor( 250, 250, 200) ) );QColor( 250, 250, 200)会生成一个QColor对象作为QPalette构造参数,于是又生成一个QPalette对象作为setPalette的参数.QColor( 250, 250, 200)是实例化对象,编译器会自动调用构造函数,而”C++中是不允许直接调用构造函数的”是指一个类不能调用其构造函数;比如:QColor color(250, 250, 200);这时也调用了构造函数,是对的,但color.QColor(250,250,200)就错了.2、QtCreator 断点所谓断点,就是程序开发者设定的一系列条件,但程序以调试方式运行时,一旦符合引发断点的条件,程序便中断执行,程序员便可检视程序运行时的状态,继而控制程序的运行,直至找出问题的所在。
设置断点的规则:在某一行代码设置断点--在行号左边缘点击鼠标或按下F9;在断点视图中选择某个断点,按下Delete键;在断点视图内点击鼠标右键,在弹出的上下文窗口中选择【Delete Breakpoint】Shift + F5 结束调试状态;F10 进入逐行调试状态。
QT学习笔记widgetMainWindow和Dialog的选择使用

Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义。
例如要使用Q Appli catio n类,则需要在程序中添加" #includ e <QAppli catio n>"QAppli catio n类用于管理应用程序范围内的资源。
其构造函数需要main函数的ar gc和ar gv作为参数。
widget被创建时都是不可见的(always create d hidden)。
widget中可容纳其它widg et。
Qt中的wi dget在有用户行为或状态改变时会emi t signal。
signal可以和sl ot函数连接在一起(connec t),这样当有si gnal被emit时,对应的slo t函数会被自动调用。
QWidge t类的构造函数需要一个 QWidge t * 指针作为参数,表示其par ent widget(默认值为0,即不存在pa rentwidget)。
在paren t widget被删除时,Qt会自动删除其所有的child widget。
Qt中有三种Layou t Manage r 类: QHBoxL ayout,QVBoxL ayOut,QGridL ayOut。
基本模式是将widge t添加进L ayOut,由Layou t自动接管widge t的尺寸和位置。
启动Qt程序时可以通过 -style参数改变程序的默认显式风格。
Chapte r 2 Creati ng Dialog s2.1 Subcla ssing DialogQt中所有d ialog的基类是Q Dialo g。
QDialo g派生自Q Widge t。
Qt中所有定义了sig nal或s lot的类,在其类定义的开始处都要使用Q_O BJECT宏。
QT知识点总结

QT知识点总结QT(即Qt宽平台应用程序开发框架)是一款跨平台的C++应用程序开发框架,被广泛应用于图形用户界面(GUI)应用程序开发。
下面是对QT知识点的总结:1.QT基础:-QT的基本概念:信号和槽机制、对象树结构、事件处理等。
- QT的核心类库:QObject、QWidget、QApplication、QMainWindow、QDialog等。
2.QT的窗口与布局:- QT的窗口与绘图设备:QWidget、QMainWindow、QDialog等。
- QT的布局管理器:QLayout、QHBoxLayout、QVBoxLayout、QGridLayout等。
3.QT的信号与槽机制:-信号与槽的概念及作用。
-定义和使用信号与槽。
-信号与槽的连接:直接连接、自动连接、带参数的连接等。
-信号与槽的线程安全性。
4.QT的事件处理:-事件的基本概念:事件循环、事件分发等。
-事件类型的识别与处理。
-自定义事件的添加与处理。
5.QT的绘图与绘图设备:- QT的绘图设备:QPainter、QPixmap、QImage等。
-绘图基础:坐标系统、画笔与画刷、颜色、字体等。
-绘图操作:画线、画矩形、画圆、绘制图像等。
6.QT的文件与数据处理:- 文件的读写与处理:QFile、QTextStream、QDataStream等。
- XML文件的读写与处理:QDomDocument、QXmlStreamReader等。
- JSON文件的读写与处理:QJsonDocument、QJsonArray等。
- 数据库的访问与处理:QSqlDatabase、QSqlQuery等。
7.QT的网络编程:- TCP与UDP的网络通信:QTcpSocket、QUdpSocket等。
- HTTP协议的网络通信:QNetworkAccessManager等。
- WebSocket的网络通信:QWebSocket等。
-服务器与客户端的开发。
Kinect+OpenNI学习笔记之2(获取kinect的颜色图像和深度图像)

Kinect+OpenNI学习笔记之2(获取kinect的颜色图像和深度图像)前言网上有不少使用Qt做界面,OpenNI为库来开发kinect。
或许大家的第一个问题就是询问该怎样使用Kinect来获取颜色信息图和深度信息图呢?这一节就是简单来回答这个问题的。
开发环境:QtCreator2.5.1+OpenNI1.5.4.0+Qt4.8.2实验说明:在使用OpenNI来驱动读取kinect数据时,我们需要了解context object这个名词。
查看了下OpenNI UserGuide文档,简单翻译下这个名词的意思:Context是openNI中一个主要的object,它掌握了OpenNI使用过程中应用程序的全部状态,以及这些状态的prodection chains,一个应用程序有多个context,但是这些context之间不能共享信息。
例如一个中间件节点不能使用另一个context的驱动节点。
Context在使用前必须被立即初始化,因此此时所有嵌入的模块被下载和分析。
为了释放context的内存,应用程序需调用shutdown程序。
虽然翻译得不准确,但是它的大概意思就是告诉我们在驱动kinect时,需要用到context这个类,且我们需要安装一定顺序去使用,这与一些常见的库驱动差不多,比如opengl,这些都需要什么初始化啊,设置属性啊等。
因此我们只需要直接去看懂他人的一个工程实例就ok了。
好了,本文参考Heresy的教程中的源码写的。
在新建好工程文件后,需要包含XnCppWrapper头文件,且需在Qt工程中设置好头文件目录和库文件目录。
使用OpenNI读取颜色图和深度图的步骤如下(这个是程序的核心部分):1. 定义一个Context对象,并调用该对象的Init()方法来进行初始化。
2. 定义一个XnMapOutputMode格式对象,设置好分图像分辨率和帧率。
3. 定义颜色图和深度图的节点对象,并用其Create()方法来创建,参数为Context对象.4. 设置颜色和深度图的输出模式,调用的方法是SetMapOutputMode();参数为步骤2中定义和设置好了的XnMapOutputMode对象。
qt 基础知识梳理

qt 基础知识梳理QT基础知识梳理QT是一种跨平台的C++应用程序开发框架,通过QT,开发者可以方便地编写可在不同操作系统上运行的应用程序。
本文将梳理一些QT的基础知识,帮助读者了解QT的核心概念和常用功能。
一、QT概述QT是由挪威的Trolltech公司开发的一种C++应用程序开发框架,其目标是提供一种简单、易用、跨平台的开发环境。
QT采用了一种特殊的信号与槽机制,使得开发者可以方便地处理对象之间的事件和通信。
QT还提供了丰富的图形界面控件和工具类,以及强大的跨平台支持,使得开发者可以快速地开发出高质量的应用程序。
二、QT的核心概念1. 对象和类:在QT中,所有的组件都是对象,对象是类的实例。
类定义了对象的属性和行为,开发者可以通过继承和多态等方式来扩展和定制类的功能。
2. 信号与槽机制:信号与槽是QT的核心机制,它通过一种松耦合的方式实现了对象之间的通信。
一个对象可以发送信号,而其他对象可以接收这个信号并作出相应的反应。
开发者可以通过connect 函数将信号和槽函数连接起来,实现对象之间的交互。
3. 事件驱动编程:QT采用了事件驱动的编程方式,当用户执行某个操作时,系统会生成相应的事件,然后QT会将事件发送给相关的对象,对象再根据事件的类型和参数来执行相应的操作。
4. 常用的QT类:QT提供了丰富的类库,包括图形界面控件、文件操作、网络通信、数据库访问等功能。
常用的类有QWidget、QLabel、QPushButton、QLineEdit、QSpinBox等,开发者可以根据自己的需求选择合适的类来构建界面和实现功能。
三、QT的常用功能1. 图形界面开发:QT提供了丰富的图形界面控件和布局管理器,开发者可以通过拖拽和设置属性的方式来构建界面。
同时,QT还提供了强大的绘图和动画功能,可以实现各种复杂的图形效果。
2. 事件处理:QT中的事件可以分为系统事件和自定义事件。
系统事件包括鼠标点击、键盘输入等用户操作,开发者可以通过重写事件处理函数来响应这些事件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Qt输入与输出:
Qt通过QIODevice为输入输出提供了极佳的支持。
其子类有Qfile、QtemporaryFile、Qbuffer等,其中Qfile 是在本地文件系统和嵌入式资源中存取文件,属于随机存取设备,可以从任意位置多次读取字节位所存储的数据。
另外Qt还提供了两个更高级别的流类:QdataStream用来读写二进制数据,QtextStream用来读写文本数据。
Qt中载入和保存二进制数据的最简单方式是通过实例化一个QFile打开文件,然后通过QdataStream对象存取它。
QdataStream提供了一种与平台无关的存储格式,不仅支持Qlist<I>和Qmap<K,T>等Qt容器类,还支持整型和双精度型等基本的C++类等。
写了一个打开txt文件的程序并成功运行,总结一下:
1.设计ui界面时左边的工具箱里工具都是分类排列的,有layout(布局)、有输入工具(input widgets)也有显示工具(Display widgets),设计的时候要合理的选择。
另外图形用户界面也可以用代码来创建,只是看着比较麻烦,效果是一样的。
2.菜单中的命令用trigger信号触发,控件名称是ui.action-- (--代表自己定义的命令)。
3.利用QfileDialog来选择打开的文件,实例化一个Qfile,将文件内容读入QtextStream(in(&file)),readline 函数实现一行行读取,然后定义Qstring变量记录每行的内容,通过textbrowser的setPlainText显示文档。
4.Qt Assistant很好很强大!!要充分利用。
另外:
QfileDialog:使用户能够在文件系统中选择一个或多个文件。
创建QfileDialog最简单的方法是使用静态函数。
在不同系统中静态函数会调用本地的file dialog。
fileName=QfileDialog::getOpenFileName(this, tr(“Open Image”,”/home/jana”,tr(“Image Files(*.png *.jpg *.bmp));
注解:this指dialog的父窗体,窗口标题是“Open Image”,路径是”/home/jana”,最后是过滤器,表示能打开的文件格式。
如果想打开多种格式的文件,也可以用两个分号隔开过滤器:
“Images(*.png *.xpm *.jpg);;Text files(*.txt) ;;XML files(*.xml)”
2011-4-1
在不同的平台上,基本的C++类型如short,char,int,long,long long会有不同的字长。
最好把它们转换为qint8,quint8,qint16,quint16,qint32,quint32,qint64,quint64,这些类型能确保字长是不随平台改变的。