QT关于控件的教程Word格式.docx
- 文档编号:18623171
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:5
- 大小:23.56KB
QT关于控件的教程Word格式.docx
《QT关于控件的教程Word格式.docx》由会员分享,可在线阅读,更多相关《QT关于控件的教程Word格式.docx(5页珍藏版)》请在冰豆网上搜索。
让我大为兴奋,C++再熟悉不过了,于是照着英文说明操练了一会,挺顺手的的,于是试着写了一代码,最后就是不会编译。
我的英语水平也有限,忙了半天了也有点累了。
今天在网上查了一些资料,终于对QTDesigner有些了解。
下面是我在网上看到的一篇文章,先收集以后再说吧。
1.什麽是QT.用Linux的人一定都知道QT是什麽.而利用QT编译出来的KDE桌面系统更是让Linux有了一次能和Windows的GUI相媲美的机会.甚至有人说KDE的桌面在图形上还胜过了Windows95了.那麽QT到底是什麽呢?
其实QT就是基於C语言上的一种专门用来开发GUI介面的程式.这里面包括了∶buttonlabelframe...等等很多的可以直接调用的东西.2.为什麽选择QT2.1QT是基於C的一种语言相信C/C目前还是一种很多人都在学习的语言.QT的好处就在於QT本身可以被称作是一种C的延伸.QT中有数百个class都是用C写出来的.这也就是说QT本身就具备了C的快速、简易、Object-OrientedProgramming(OOP)等等无数的优点.2.2QT具有非常好的可移植性(Portable)QT不只是可以在Linux中运作.也同样可以运行在MicrosoftWindows中.这也就意味者利用QT编写出来的程式在几乎不用修改的情况下就可以同时在Linux中和MicrosoftWindows中运行.QT的应用非常之广泛从Linux到Windows从x86到Embedded都有QT的影子.3.什麽是QTDesigner简单的来说QTDesigner是一个GUI的工具.这个工具可以帮助我们来加快写QT程式的速度.利用QTDesigner可以用一种所见既所得的方式来产生QT程式的GUI介面的程式码.通过增加一些功能就可以完成一个程式了.利用QTDesigner可以非常快速的学会QT而我们这里说利用QTDesigner来学习QT而不是利用QTDesigner来写QT这里的区别就在於QTDesigner所产生的程式码有些繁琐.跑起来也比较的慢些.我们这里只是利用QTDesigner来帮助我们学习.而不是直接去跑QTDesigner生成的程式码.3.基本要求因为这篇文章主要是告诉大家如何利用QTDesign来达到快速学习QT的.所以您最也要做到∶您需要有一台可以跑Linux的电脑或者MicrosoftWindows的电脑足够的RAM和HardDisk用以安装、编译QT您的Linux中需要安装有KDE、QT、QTDesigner、g等等程式.您如果适用MicrosoftWindows则您需要VC和QTForWindowsLinux的使用者最好还能安装一个Kdevelop(一个非常好的用来开发QT的DevelopEnverment)4.QTDesigner简单的介绍--从PushButton开始假设您一切都安装好了.现在我们打开QTDesigner吧.打开后选择New-gtDialog这时侯您的QTDesigner中就会出现一个From1来.现在我们click一下上面的tools中的那个pushbutton标有OK的图标)并且用mouse选择到一定的大小.在这个pushbutton上面用您的mousedoubleclick一下.我们就可以改变pushbutton的label了.这里我们把pushbutton1这几个字换成Exit然后直接按Enter或者用mouse选择OK也可以.现在我们看到那个button中的标签已将变成Exit了.我们这时侯还需要给这个ExitButton一个signal(信号)这样当您在Exit这个Button上click的时侯.QT才知道如何去处理这个信号.我们按一下F3(connectsingnalslot)然后在那个ExitButton上面Click一下.这时侯我们就看到了EditConnection的Dialog了.在Signal中选择clicked在slot中先选择setFocus就好了.这时侯选择OK.我们就算是完成了.如果想看看这个小程式长什麽样子.可以用CTRLT来看PreView.seefigure1figure1首先在您的HOME中建立一个qt_program的Directory出来.这个Directory将会作为我们存放文件的地方.现在我们用File-gtSave把这个文件存为form1.ui放在HOME/qt_program的目录下.现在如果大家打开form1.ui来看一看.会发现那是一堆有很多的东西.所以我们需要用一个叫做uic的程式来把.ui文件转换成QT可以使用的.cpp和.h文件.用下面的指令就可以生成我们需要的.h文件了uic-oform1.hform1.ui而生成.cpp文件则需要用以下的指令∶uic-iform1.h-oform1.cppform1.ui这时侯form1.h中就会看到一个标准的QT需要的.h文件1.ifndefFORM1_H2.defineFORM1_H3.include4.include5.classQVBoxLayout6.classQHBoxLayout7.classQGridLayout8.classQPushButton9.classForm1:
publicQDialog10.11.Q_OBJECT12.public:
13.Form1QWidgetparent0constcharname0boolmodalFALSEWFlagsfl014.Form115.QPushButtonPushButton116.17.endif//FORM1_H1-2:
定义FORM1.H这个文件3-4:
这里是我们需要用到的两个.h文件5-7:
我们根本用不到qtdesigner自己产生的8:
QPushButton需要用到这个class9-11:
我们的form1是based在QDialog上面的12:
公开的(可以在以后的程式中使用.用过C的人一定明白)13:
Form1的架构14:
清除Form115:
产生一个pushbutton(就是那个标有exit的按钮17:
结束对FORM1.H的定义而form1.cpp文件如下:
1.includequotform1.hquot2.include3.include4.include5.include6.include7./8.ConstructsaForm1whichisachildofparentwiththe9.namenameandwidgetflagssettof10.11.Thedialogwillbydefaultbemodelessunlessyousetmodalto12.TRUEtoconstructamodaldialog.13./14.Form1:
:
Form1QWidgetparentconstcharnameboolmodalWFlagsfl15.:
QDialogparentnamemodalfl16.17.ifname18.setNamequotForm1quot19.resize59648020.setCaptiontrquotForm1quot21.PushButton1newQPushButtonthisquotPushButton1quot22.PushButton1-gtsetGeometryQRect1301601617123.PushButton1-gtsetTexttrquotExitquot24.//signalsandslotsconnections25.connectPushButton1SIGNALclickedPushButton1SLOTsetFocus26.27./28.Destroystheobjectandfreesanyallocatedresources29./30.Form1:
Form131.32.//noneedtodeletechildwidgetsQtdoesitallforus33.1:
我们上面的定义文件2:
pushbutton所需要的.h文件3-6:
我们根本用不到qtdesigner自己产生的7-13:
QTDesigner产生的注解14-15:
Form1的结构17-18:
如果Form1:
Form1中没有pass一个名子过来.那麽就命名为Form119:
resize20:
把显示出来的那个Dialog的名子定为Form1也就是window中左上角的字21:
做出一个新的button名子为PushButton122:
这里设定了pushbutton在这个dialog中的位置.Qrect13016016171这里是说在一个Dialog中以左边最上面来算位置是00所以说这里的130(横向)和160(纵向)就是说我们从00开始往左边跑130往下跑160.这样我们就算出了pushbutton这个按钮画在那里了.后面的16171则是定义这个pushbutton到底要画多大设定了长和高23:
通过呼叫setText指令我们可以在这个button上面给入我们需要的文字.这里是Exit24:
QTDesigner产生的注解25:
上面就是处理当接收到clicked的信号(singal)以后我们所作的事情(setFocusonPushButton1connect这里是告诉程式连接一个信号PushButton1SIGNALclicked是说信号是由PushButton1发出发出的信号为mouseclickedPushButton1SLOTsetFocus表示信号发出以后目标(Object)为PushButtonevent是setFocus动作26:
主程式结束27-29:
QTDesigner的注解30-33:
清除Form1由於我们要常常用到QTDesigner也就是说需要常常用到uic这苹程式.为了省去每次都要打一堆东西的麻烦.我们来写一各小script来处理.ui档案.不难看出uic在处理/生成.h.cpp档案的时侯用到了两个指令∶uic-oform1.hform1.uiuic-iform1.h-oform1.cppform1.ui所以我们的script就写成∶/bin/shmyuicprogramconvert.uito.cpp.hbycallinguicINPUT_UI这里读取外面传回来的文件名if-fquotINPUT_UIquotthenechoquotUICFileINPUT_UINotFoundquotechoechoquotUseragemyuicinput_file.uiquotechoexit1fi上面的语句检查我们所输入的.ui文件是否存在如果找不到指定的.ui文件则显示一个简短的使用说明INPUT_Hechocut-d.-f1.h这里我们利用cut来处理输入的.ui文件.得到一个.h的文件名INPUT_CPPechocut-d.-f1.cpp同样的道理利用cut产生一个.cpp的文件名uic-oINPUT_HINPUT_UI这里就是利用.ui产生.h的文件uic-iINPUT_H-oINPUT_CPPINPUT_UI利用.h和.ui产生.cpp文件.我门把这个文件存为myuic.并切chmodx变成可执行档案.然后cp到/usr/bin上面.如果您在电脑中没有root的权限.可以在自己的HOME目录中做一个bin的Directory出来.然后去编辑您的.bash_profile(这里假设您用的是bash)如果您的.bash_profile中本身已经有了PATH这段文字那麽您只要在原本的PATH后面加上:
HOME/bin就可以了.如果没有那麽就在您的.bash_profile中写入∶PATHPATH:
HOME/binexportPATH这样您以后就可以直接执行myuic这个文件了.现在试试看用myuic来处理刚刚的那个form1.ui这个文件吧.先把旧的.h.cpp都删除掉∶rm-f.cpp.h然后用myuic来生成新的.cpp.h文件∶myuicform1.ui这时候用ls就会看到form1.cppform1.hform1.ui这三个文件了这时侯我们只需要写一个小的main.cpp就可以编译form1.cpp了.main.cpp非常的简单includequotform1.hquotincludeintmainintargccharargvKApplicationappargcargvquotForm1quot//KDE是建立在QT的基础上得所以KApplication//所以kapp.h实际上包含了qapplication.hForm1form1newForm1form1-gtshowapp.setMainWidgetform1returnapp.exec基本上来说很简单.然后当然就是编译啦.我建议写出来的东西都用Kdevelop来解决.首先Kdevelop介面非常的友善.又能省下写Makefile的麻烦.打开Kdevelop以后选择项目-gt新建KDE2-Normal然后选择Next在这一页中.注意不要在任何选项中打quotxquot因为我们用不到.反而会增加麻烦.最后一直next然后createexit.这时侯我们就已经有一个新的项目可以用了.在menu中选择:
项目-gt添加现存文件.然后把qt_program中的form1.cppform1.h和main.cpp加入.这时候只要按一下F9Kdevelop就会自动帮您把程式compile出来.并且执行.程式执行后我们不能用click那个ExitButton退出程式.因为我们并没有给他退出的信号.现在让我们来把程式码作些改动∶form1.hifndefFORM1_HdefineFORM1_HincludeclassQPushButtonclassForm1:
publicQDialogQ_OBJECTpublic:
Form1QWidgetparent0constcharname0QPushButtonPushButton1endif//FORM1_Hform1.cppincludequotform1.hquotincludeincludeForm1:
Form1QWidgetparentconstcharname:
QDialogparentnamesetCaptiontrquotForm21quotPushButton1newQPushButtonthisquotPushButton1quotPushButton1-gtsetGeometryQRect13016016171PushButton1-vsetTexttrquotExitquotconnectPushButton1SIGNALclickedkappSLOTquitForm1:
Form1main.cpp保持不变.经过一番简化.程式码马上简单很多了.这里我们除了把一些由QTDesign做出的不必要的code挑除以外.对form1.cpp做了两个小改动.1.增加了include这个headfile.2.我们把∶connectPushButton1SIGNALclickedPushButton1SLOTsetFocus改变为connectPushButton1SIGNALclickedkappSLOTquit同样的信号传送但是目标对象有所改变.现在目标将作用在kapp上面也就是我们的主程式(mainapplication)而SLOT则是呼叫quit现在Kdevelop中更改程式码.然后按下F9.等待程式运行.这时侯我们的程式只要在那个Exit的Button上面用mouseclick一下.这个程式就完全关闭了.现在我们在这个PushButton中再增加一些功能.我们来看看QTDesigner中的ToolTip功能.如果您的QTDesigner中PropertyEdit并没有自动出现.那麽请在QTDesigner中选择Menu中的Windows然后选择PropertyEdit.只要在PushButton1那个Button上面用mouseclick一下.就可以对Pushbutton1的Property进行编辑.在PropertyEdit中的ToolTip后面可以进行文字输入的地方打入下面的文字∶ClickOnthisButtonWillExitMainWindow.然后sava文件.(Form1.ui)在用我们的小script呼叫uic程式把Form1.ui转成Form1.h和Form1.cppmyuicform1.ui这时侯我们来观察生成的form1.cpp文件我们会发现现在这里面比一前多了些东西.现在这里多了一行:
QToolTip:
addPushButton1trquotClickeOnthisButtonWillExitMainWindow.quot这里我们用QToolTip中的add在ObjectPushButton1上面加入quotClickeOnthisButtonWillExitMainwindow.quot这个字幕.现在我们在前面那个被我们简化的form1.cpp中加入上面那行程式码因为我们需要调用到QToolTip所以我们也要把qtooltip.h给include进去.form1.cppincludequotform1.hquotincludeincludeinclude//因为我们需要用到QToolTip所以这里要加入qtooltip.hForm1:
QDialogparentnamesetCaptiontrquotForm21quotPushButton1newQPushButtonthisquotPushButton1quotPushButton1-gtsetGeometryQRect13016016171PushButton1-gtsetTexttrquotExitquotQToolTip:
addPushButton1trquotClickOnthisButtonWillExitMainWindow.quotconnectPushButton1SIGNALclickedkappSLOTquitForm1:
Form1这时侯重新编译这个form1的程式.您就会看到当您把mouse移动到Exit那个按钮的时侯.停留差不多一两秒钟.quotClickOnthisButtonWillExitMainWindowquot的字样就会出现.QPushButton中还有一个常用的功能就是setEnabled了.setEnabled通过TRUE和FALSE这两个值.可以决定这个扭是否可以被使用者按下.我们现在在QTDesigner中的PropertyEdit中把Enable选择成FALSE然后用myuic生成新的程式码.myuicform1.ui这时候再去观察form1.cpp会发现里面多了一行PushButton1-gtsetEnabledFALSE这一行就把PushButton1设置为不可使用了.如果需要PushButton1可以正常的被Click那麽只要用PushButton1-gtsetEnabledTRUE就可以了.提示∶最常用的作法通常是做出一个SLOT或者一个判断语句来设定PushButton的状态.QPushButton还有一各场常被用到的功能就是Font(字体的设定)在QT中我们通过QFont可以设定字体的大小种类.在QTDesigner中的PropertyEdit中.有一个Font的选项.我们在Font后面的那个...上面按一下就会出现一个可以选择font的window.这里我们以Courieradobe24号字为例子.选择后Save然后观察重新用uic生成的.cpp程序码.我们会发现主程式中多出了下面这些程式码∶QFontPushButton1_fontPushButton1-gtfontPushButton1_font.setFamilyquotadobe-courierquotPushButton1_font.setPointSize24PushButton1-gtsetFontPushButton1_font后面还多出一个boolForm1:
eventQEventev.这里我们先不要去理会boolForm1:
eventQEventev只看下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QT 关于 控件 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)