QT常见问题.docx

上传人:李司机 文档编号:7187358 上传时间:2024-06-29 格式:DOCX 页数:10 大小:29.02KB
返回 下载 相关 举报
QT常见问题.docx_第1页
第1页 / 共10页
QT常见问题.docx_第2页
第2页 / 共10页
QT常见问题.docx_第3页
第3页 / 共10页
QT常见问题.docx_第4页
第4页 / 共10页
QT常见问题.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《QT常见问题.docx》由会员分享,可在线阅读,更多相关《QT常见问题.docx(10页珍藏版)》请在三一办公上搜索。

1、返回true,何“会有效的16依供庖商第,J存在;否则返回false.boolQSerialPortlnfo=hasProductdentifier()ConSt这囹true,假如行一个有效的16位产丛数出存在;否则这旧falseQT中行1;信、;的声明是在又文件中进行的,QT的SigMS关饰字指出进入门方:M叫M.MC即可声明自己的信号.例知,下面定义了三个信号ISignals:VoidmySig0;VoidmySgnal(nt);VoidmyS9alParam(ntx,nty);在上面的定义中.SignalS是QT的美键?,而#C/C+的关键字,按下来的行VoldmySlgnaK)定义了信

2、号mySignal.这个。:“没小携用格数,接下次的力voidmySgnal(i11tx)定义/才名名/:SmySignai,不过也携带,个凭形整数.这有点类似于C+中的点函数,从形式上访信号的声明利般的C+函社是和网的.不过信号却没有用数体定义.另外,信号的这口类型都是VOid,不变希硕能从信号返回个什么仃用信J1.信号有moc门动产生,他么不应W.cpp文件中实现,1ft:ffi股的C+成员,健被正常明川,也么州的特殊性就是特别多信号能和其相关联,当卬其关联的信号校射是,这个恰就会低则用.嵋能“拿数但横的梦致不能有跳有依.既然Hl是假的成员用数,闪此和其他的咕数相同,他打也有“取权米.情的

3、取权限嫡定徘能够和其相关UX.司股的C+成员函放相同.僧函(也分为:科哭叫R3:PUbbcslots,pnvateslotsfprotectedslots.Publicslots:花这个区内声明的1.6味希全部对象那可格信号和之相连接.这对于烟件一穆特别有用,你能创趣彼北无不了解的对象.稔他们的伯号和柏造行在按次便AMMMf正确的传递.protectedslots:在这个区内向明的柏意味弟i豹英及H子哭能绢格怡号和之相连接.这适用于瑞楮.Ifef;是美实现的,部分.不过其界面接口却面对外郃.Privatedots:任这个区内声明的常意昧也只书关门施终格信号和之相it接.这适用于纤缰特别St密的

4、关.publicslots:voidapply(voidCappIyFunctionXQ1.isf.void*),char*):H不合语法;你能来纳下面的方法绕过这个限制:typedefvoid(ApplyFuctionType)(Q1.isf.void,);classsomeClass:publicQObject(Q_OBJECT(-publicslots:voidapply(ApplyFunctionType,car,);):1.侑号和梢不能有缺省参数既然SignaI-sot绑定是发生在运行时刻,那么.从概会上讲运用我省参数是困难的,下面的用法是不合珅的:classSomeClass:pu

5、blicQObject(QOBJECTpublicslots:voidSOmeSlOt(inix=100)jx的缺省di定义成100.在梢曲Q以中运用是佛误的;&佶号和情也不能携带模板类参数.他如将信号、槽声明为模板类参数的话,即使m。C工具不报告惜识,也不行能得到预期的结果.例如,下面的例了中当信号放射时,槽的数不会被正确调用:-publicslots:voidMyWidget:set1.ocation(pairlocation);-1publicsignals:voidMyObject:moved(pairlocation):不过,你能运用typed饼语句来烧过这个Ri制.如下所示:typ

6、edefpairIntPair;signals:/(.,;号定义区friendclassClassTemplate;/此处定义不合语法QTextStream和QDataStream的Ix分QTextStream和QDataStream都是面对数据流的,都适用于QlODeViCe,但是他们的他重点不同。可以这么说,QTeXtStream能做的事情QDataStream都能做。QTextStreamfttR向QloDeViee文本读写,这我所说的文本指的是一般的简沽的QCharqSmngq1.atinlCharjnt等等之内的,和Ci?5吉中巧文件或并网洛传输的时帕先将内容填充到个buffer.进

7、行操作有点类似.M于般的轻斑徼的流操作类.下面代码就是写文件操作QFiIcdata(outputtxt);if(data.open(QFile:WriteOnlyIQFile:Truncate)QTextStreamoutdata;outResult:-qSetFieldWidt.h(10)left3.142.;/write”ReulJ3.142.7w)QDataStream则是使JIvr数据格式和类型,QDataStream数抠就不仅UJ以操作QTextStream所能处列!的般文本,而tl可以对特定格式的类型数甥进行完备的输入与输111.熟识1.inUXC开发的程序员都应当知道,通过s。C

8、ket传输text文本数据比较简洁.假如我们想通过Socket传输特定的数据垢构而1.聘平台以及CUP进行操作和解析就比蚊麻烦。比如对于一个点的坐标,幺妹传输一个结构体,让接收端进行解析但是可能对于不同的平台以及不同的内存安排方式的CPU来说,解析的结果不徵定是我们预期的,5是实现,但是会比较麻烦。QDataSream就可以轻松的做到这点,QDataSream将数据序列化C不仅可以读写text,而且还好可以读写一个特定数据类型,比如QPantQFOu几乎QT支持的全部类型都可以运用QDataSream迸行操作。一卜以读写QPOm为例:QPointpos(8r6)QPointtnp;QByteA

9、rraydatagram;QDataStreamout(datagram,QIODevice:Writenly;out.setVer21on(CDa:.a11!r;filc.opcn(QIODovicc:RciidOnly);QDataStreamin(&file;/readthedataserializedfrorathefileQStringstr;qint32a;inatra;/extract,theansewerisNand42串口通信异步传输:是指次也输个字符(58位)的数据.班个字符用个书始位引导,用一个停止位结束。这样就能是接收方分析动身送方式的数据。但他沽发生计时漂移.异步通信

10、中两个匝要的指标;字符帧格式和波特率,数据通常以字符或者字节为取位组成字符帧传送.字符帧由发送雨巡帧发送,通过传输线被接收设备逐帧接收.发送端和接收端可以由抑子的时钟来限制数据的发送和接收,这两个时神源彼此独立,互补同步,接收端检测到传输线上发送过来的低电平逻辑“0(即字符独起始位)时,确定发送端已起先发送数据,好当接收端收到字符帧中的停止位时,就知道假字符已羟发送完毕.同步传输:采纳面对字符或面对位的插入方式,限制所传送的一帧的胆始.同步异步报文传粕方式也是如此.缺点:要求发送时钟和接收时钟要保持严格的同步.那口忿数定义:BaudRateTypeBaudRate;波特率设置,我们设罚为960

11、0,即程序中用BAUD9600:DataBitsTypeDataBitS:数据位设I1.我In设置为8位数据位,即DATA_8:ParityTypeParity:奇科校验设力.我们设置为无校验.即PAF1.NoNE:StopBitsTypeStopBitS:停止位设置,我们设置为1为停止位.即STOP;FlowTypeFlowControI;数据流限制设置.我们设置为多数据流限制,即F1.OW一。FF:1.ongTimeou1.MiIiisec;延时设置.我们设置为我时500ms,t!l500:这样便写出以下程序:StructPortSGttingsmyComStting=(BAUD960C.

12、DATA_8,PAR_NONE_STOP_1,F1.OW_OFF,500;我们定义了个结构体变/myComSetting,并对其进行了初始化QT写的Wi1.QeXtSeriaIPort小11数业不能超过10个如下怪改,忸思几个就几个:QStringportleft=port.mid(3,3)/qDebug()portnameis:VVPOrtVVPOrtleft;IntPortnlJm=PoftlefUOIn10;if(portnumcomboBox-currentTet()rmyComSe111ngrQextSerla1Base:SventDriven);定义串口对*.并传递参数.在构造函数

13、里对其进行初始化myCora-open(QIODevice:ReadWrite);myCotn-setBaudRate(BAUDl15200);myCora-seCDataBits(DATA-8);myCom-setParity(PAR-N0N三);myCom-setStopBits(STOPl);myCom-setFlowContol(F1.OW_OFF);myCom-5Cti70Ut(10);/以可谀写方式打开申口connect(myComr$lGh-(readyRead()r*-J(readMyCom();信号和俏函数关联当一口煤冲区方数据时.进行读小口搽作发送卜六进制数据QByteAr

14、rayba;for(inti=0;iba(i=i;myCom-writereadAll(;读取小I】波冲区的全部数擀给临时变后te(npui-textBrowser-nsertPlaintext(temp);ui-textEdit_2-in3ertPlainTexc(temp.toHe();构中口的数据点示在物口的文本例漆器中串口以十六进制发送数据voidWidget:三String2Hex(QStringstr,QByteArray4senddata)inthcxdatarIowhexdata;inthedatalen-0;intICn=str.1.ength(;senddata.resiz

15、e(len/2;cncrlstrrhstr;for(inti-0;i=len)break;Istr=str(i.toAscii();hedata-ConvertHexChar(1.str;if(hexdata=16II(1.owhexdata=16)break;elsehexdata-hedata*161.owhedata;i*;senddata(hedatalen)-(char)hedata;hexdatalen;Jsenddata.resize(hexdatalen);)charwidget:JConvertHexChar(charch)iif(ch-,0,)&(ch-A,)&4(ch.r

16、r:ch-,A,+10;elseif(ch-*a,)(chr::urnch-m;elsereturnbytesAvailable(-41)1tmp-highCom-readAllO;QataStrca11outQIODevice:PcadWritc);while(out.atEnd()(qnt8outChar-O;otoutCher;QStringstr=QStri11g);StrHex+=str;qDebug()1QBytcArraytemp;i1(myCtxn-butesAvallable()-8)temp=myCom-readAll()/i,tj*,lxftft;QDetaStreamo

17、ut(temp,QIODevice:ReadHrite);将字节IMI谀入while(out.atEnd()qint8outchar-0;。叱outXhar/每字节埃充次日到结束QStringStr=QString(nl11).arg(OutCharfcOxFF,2rlrQ1.atinlCha(0,);十六进制的转换recBrowser-lnsertPlainText(str;)recBrowser-inserPlainTet;)十六进制转换成十进制i11tChangNum(CStringstr,intlength)(csr-v3tuU16(0);依楙十六进制字符串的长度,这里忸也数组不委建界

18、intnum(16(0;intcount=1;intresult=0;Strcpy(rcvstrrstr);for(inti=length-l;i=0;i)if(revstr(i=066revstr(i=,9)numi-revstri-48;/10的ASCiA码是48Cif(=,)&(rcvstrinumi-revstri-,a*f10;elseif(rev5tr(iJ=,A,)&(rcvstrinumi-revstri-A,10;elsenumi-0;rc5ult=re5lt11miJ*cont;c。Unt=8gsl6;卜六进加(假如是八进制就在这里案以8)returnresult;)int

19、main()1CStringStr=uOxllw;intn-0;n=ChangcNn(strzStr-Ggth();prlntf(-dn,rn);return0;)输出17QUneEdit是单行文本根QTextEdIt是多行文本相(I)单行文本标Q1.ineEdit常用的方法和属性(八)获得和”文本对齐方式Qt:AlignaentalignMntocoastVOidSetAlignent(Qt:AlignBentflag);(b)获得和设置文件框的内容QStringtxtconstvoidstTxt(constQStrlng)(C)获得和役选择的文本QStringselectetPUinTex

20、t12345rmbcde);(2)获得多行文本据内容QStringstr;str=IextEdit-XoPlainTextO;ui-textBroweetPlainText(9/这是清空textBrovser里面全修敷flQT中是用“XtBEgr使窗口显示能弊的信息问描述I运用textBE8r写入敷,当效超过窗口大小后会自动显示活动条,怎么样使滚动条着数的写入移动,示育口的量终获,的佶息呢?在界面设计内,5feAtextBrorser,iR后右击逸算GoToSlot(转道槽),找到如下值号的数textCangedOQTextEdit单击-OK-(现定),转到如下程序voidMainTindov

21、:on_textBro*8er_textO)ange(iOui-textBrv8er-aoveCursr(QTextCursor:EDd);便可实现显示弊的信息QT中单选樨和复逸播在QtGUI中,单选糖类是QRadiOBUttx.复地根类是QCbckBox,他们#是QAbatmctButton的paishngl单选植示例,设Sft异状不radioutton-setChecked(true);退回逸界状态boolradio_8lradioButto11-lCMckdO;复逸枢不同于单选招,他有三粒状方,checked,UnChedCed和CheCkedQt:Unchecked0Theiteais

22、unchecked.Qt:ZPartiallyCbecked1TheiUaisPertianychecked.IteasinhierarchicalBOdelSsaybepartiallycheckedifsoe,butnotall,oftheirchildrenarechecked.Qt:Cbckd2ThiUaischecked.常用方法和属性如下,返回选号的状右Qt:ICbeckStateCheckStateOcoast是否处于PartiallyChecked状;6boolIsTristeteOconst设J1.ifcIl的状有,checked*uncheckedvoidSetCheckState(Qt:CbeckStatestate)设J1.为PartiallyChecked状态voidSetTristate(bly=true)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号