Qt中checkbox的用法.doc_第1页
Qt中checkbox的用法.doc_第2页
Qt中checkbox的用法.doc_第3页
Qt中checkbox的用法.doc_第4页
Qt中checkbox的用法.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

转载QRadioButton,QCheckBox用法(2011-03-30 23:50:03) 转载标签: 转载分类: Qt 原文地址:QRadioButton,QCheckBox用法作者:cyclone/6.创建一个buttongroup,内有两个radiobutton和两个checkbox,/分别为radiobutton1、radiobutton2、checkbox1和checkbox2,/radiobutton1选中的同时,checkbox1也被选中且checkbox2非选中,/radiobutton2选中的同时,checkbox2也被选中且checkbox1非选中。#include MyMainWindow:MyMainWindow()setGeometry(100,100,300,200);group=new QButtonGroup(Option,this);group-setGeometry(10,10,280,180);r1=new QRadioButton(RadioButton1,group);r1-move(20,20);r2=new QRadioButton(RadioButton2,group);r2-move(20,110);c1=new QCheckBox(CheckBox1,group);c1-move(160,20);c2=new QCheckBox(CheckBox2,group);c2-move(160,110);group-insert(r1);group-insert(r2);group-insert(c1);group-insert(c2);connect(r1,SIGNAL(clicked(),this,SLOT(MySlot1();connect(r2,SIGNAL(clicked(),this,SLOT(MySlot2();void MyMainWindow:MySlot1()c1-setChecked(TRUE);c2-setChecked(FALSE);void MyMainWindow:MySlot2()c2-setChecked(TRUE);c1-setChecked(FALSE);/6.创建一个buttongroup,内有两个radiobutton和两个checkbox,/分别为radiobutton1、radiobutton2、checkbox1和checkbox2,/radiobutton1选中的同时,checkbox1也被选中且checkbox2非选中,/radiobutton2选中的同时,checkbox2也被选中且checkbox1非选中。#include#include#include#includeclass MyMainWindow:public QWidgetQ_OBJECTpublic:MyMainWindow();private:QButtonGroup *group;QRadioButton *r1;QRadioButton *r2;QCheckBox *c1;QCheckBox *c2;public slots:void MySlot1();void MySlot2();#include #include void main(int argc,char *argv)QApplication a(argc, argv);MyMainWindow w;a.setMainWidget(&w);w.show();a.exec();QT Designer 使用入门例子来源: ChinaUnix博客 日期:2008.07.24 15:48(共有条评论) 我要评论写在前面: 这里只是告诉大家一种如何快速学习QT的方法.这里也只对QT Designer 和QT作一个简单的介绍.让没有写过QT的人能对QT有一个初步的认识.如果您真的对QT Programming很有兴趣.这里我建议您去看看OREILY出版的Programming with QT和Bible出版的KDE 2 /QT Programming.这两本书将会给您带来一个好的开始.这篇文章适合您吗?这篇文章只是对QT的一个入门介绍.如果您有兴趣认识一下QT这种语言,那么这篇文章就很适合您了. 如果您对C+能有一些的了解,那么您将会很轻松的看完这篇文章.如果您什么程式语言也没有学过.但也想一窥QT的容貌.那么也没有关系.这里都是些非常间单的东西.也需会成为您学习写程式的一个起点. 如果您本身已经在开发、学习QT/KDE或者Xwindow有关的程式设计.那就只能当是打发时间看看玩了.这篇短短的文章没有写到很多的东西.对于这些高手们,我唯一能提共的一个经验就是多多去看 $QTDIR/include 下面的东西.1.什么是QT.用Linux的人,一定都知道QT是什么.而利用QT编译出来的KDE桌面系统, 更是让Linux有了一次能和Windows的GUI相媲美的机会.甚至有人说, KDE 的桌面在图形上,还胜过了Windows95了.那么QT到底是什么呢?其实QT 就是基于C+语言上的一种专门用来开发GUI介面的程式.这里面包括了: button; label; frame .等等很多的可以直接调用的东西.2.为什么选择QT2.1 QT是基于C+的一种语言相信C/C+目前还是一种很多人都在学习的语言. QT的好处就在于QT本身可以被称作是一种C+的延伸. QT中有数百个class都是用C+写出来的. 这也就是说, QT本身就具备了C+的快速、简易、Object-Oriented Programming (OOP)等等无数的优点.2.2 QT具有非常好的可移植性(Portable)QT不只是可以在Linux中运作.也同样可以运行在Microsoft Windows中.这也就意味者,利用QT编写出来的程式,在几乎不用修改的情况下,就可以同时在Linux 中和Microsoft Windows中运行. QT的应用非常之广泛,从Linux到Windows从x86到Embedded都有QT的影子.3.什么是QT Designer简单的来说QT Designer是一个GUI的工具.这个工具可以帮助我们来加快写QT 程式的速度.利用QT Designer可以用一种所见既所得的方式,来产生QT程式的GUI介面的程式码.通过增加一些功能,就可以完成一个程式了.利用QT Designer 可以非常快速的学会QT,而我们这里说利用QT Designer来学习QT而不是利用QT Designer来写QT,这里的区别就在于, QT Designer所产生的程式码有些繁琐. 跑起来也比较的慢些.我们这里只是利用QT Designer来帮助我们学习.而不是直接去跑QT Designer生成的程式码.3.基本要求因为这篇文章主要是告诉大家如何利用QT Design来达到快速学习QT的. 所以您最也要做到:您需要有一台可以跑Linux的电脑或者Microsoft Windows的电脑足够的RAM和HardDisk用以安装、编译QT 您的Linux中需要安装有KDE、QT、QT Designer、g+等等程式. 您如果适用Microsoft Windows,则您需要VC+和QT For Windows Linux的使用者最好还能安装一个Kdevelop(一个非常好的用来开发QT的Develop Enverment)4. QT Designer简单的介绍-从PushButton开始假设您一切都安装好了.现在我们打开QT Designer吧.打开后,选择New - Dialog 这时侯,您的QT Designer中就会出现一个From1来.现在我们click一下上面的tools中的那个pushbutton, (标有OK的图标)并且用mouse选择到一定的大小.在这个pushbutton 上面用您的mouse double click一下.我们就可以改变pushbutton的label了.这里我们把pushbutton1这几个字,换成Exit,然后直接按Enter或者用mouse选择OK也可以.现在我们看到,那个button中的标签已将变成Exit了.我们这时侯还需要给这个Exit Button一个signal(信号),这样当您在Exit这个Button上click的时侯. QT才知道如何去处理这个信号.我们按一下F3(connect singnal slot)然后在那个Exit Button上面Click一下.这时侯我们就看到了Edit Connection的Dialog了.在Signal中选择clicked,在slot中,先选择setFocus()就好了.这时侯选择OK.我们就算是完成了.如果想看看这个小程式长什么样子. 可以用CTRL+T来看PreView. (see figure 1)figure 1首先在您的$HOME中建立一个qt_program的Directory出来.这个Directory将会作为我们存放文件的地方.现在我们用File - Save把这个文件存为form1.ui放在$HOME/qt_program 的目录下.现在如果大家打开form1.ui来看一看.会发现那是一堆有很多 4. #include 5. class QVBoxLayout; 6. class QHBoxLayout; 7. class QGridLayout; 8. class QPushButton;9. class Form1 : public QDialog 10. 11. Q_OBJECT 12. public: 13. Form1( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); 14. Form1(); 15. QPushButton* PushButton1; 16. ; 17. #endif / FORM1_H1-2:定义FORM1.H这个文件3-4:这里是我们需要用到的两个.h文件5-7:我们根本用不到, qt designer自己产生的8: QPushButton需要用到这个class 9-11:我们的form1是based在QDialog上面的12:公开的(可以在以后的程式中使用.用过C+的人一定明白) 13: Form1的架构14:清除Form1 15:产生一个pushbutton (就是那个标有exit的按钮17:结束对FORM1.H的定义而form1.cpp文件如下:1. #include form1.h2. #include 3. #include 4. #include 5. #include 6. #include 7. /* 8. * Constructs a Form1 which is a child of parent, with the 9. * name name and widget flags set to f 10. * 11. * The dialog will by default be modeless, unless you set modal to 12. * TRUE to construct a modal dialog. 13. */ 14. Form1:Form1( QWidget* parent, const char* name, bool modal, WFlags fl ) 15. : QDialog( parent, name, modal, fl ) 16. 17. if ( !name ) 18. setName( Form1 ); 19. resize( 596, 480 ); 20. setCaption( tr( Form1 ) );21. PushButton1 = new QPushButton( this, PushButton1 ); 22. PushButton1-setGeometry( QRect( 130, 160, 161, 71 ) ); 23. PushButton1-setText( tr( Exit ) ); 24. / signals and slots connections 25. connect( PushButton1, SIGNAL( clicked() ), PushButton1, SLOT( setFocus() ) ); 26. 27. /* 28. * Destroys the object and frees any allocated resources 29. */ 30. Form1:Form1() 31. 32. / no need to delete child widgets, Qt does it all for us 33. 1:我们上面的定义文件2: pushbutton所需要的.h文件3-6:我们根本用不到, qt designer自己产生的7-13: QT Designer产生的注解14-15: Form1的结构17-18:如果Form1:Form1中没有pass一个名子过来.那么就命名为Form1 19: resize 20:把显示出来的那个Dialog的名子定为Form1,也就是window中左上角的字21:做出一个新的button,名子为PushButton1 22:这里设定了pushbutton在这个dialog中的位置. Qrect(130, 160, 161, 71)这里是说在一个Dialog中,以左边最上面来算,位置是(0,0),所以说,这里的130(横向)和160 (纵向)就是说我们从(0,0)开始,往左边跑130,往下跑160.这样我们就算出了pushbutton这个按钮画在那里了.后面的161, 71则是定义这个pushbutton到底要画多大,设定了长和高23:通过呼叫setText指令,我们可以在这个button上面给入我们需要的文字.这里是Exit 24: QT Designer产生的注解25:上面就是处理当接收到clicked的信号(singal)以后,我们所作的事情(setFocus on PushButton1) connect这里是告诉程式连接一个信号,PushButton1, SIGNAL(clicked(),是说信号是由PushButton1发出, 发出的信号为mouse clicked,PushButton1, SLOT(setFocus()表示信号发出以后,目标(Object)为PushButton, event是setFocus()动作26:主程式结束27-29: QT Designer的注解30-33:清除Form1由于我们要常常用到QT Designer,也就是说,需要常常用到uic这只程式.为了省去每次都要打一堆东西的麻烦.我们来写一各小script来处理.ui档案. 不难看出, uic在处理/生成.h .cpp档案的时侯,用到了两个指令:uic -o form1.h form1.ui uic -i form1.h -o form1.cpp form1.ui所以我们的script就写成:# # #!/bin/sh # # myuic program convert .ui to .cpp .h by calling uic # # INPUT_UI=$ # #这里读取外面传回来的文件名# # # if ! -f $INPUT_UI # then # echo UIC File $INPUT_UI Not Found # echo # echo Userage myuic input_file.ui # echo # exit 1 # fi # #上面的语句检查我们所输入的.ui文件是否存在# #如果找不到指定的.ui文件,则显示一个简短的# #使用说明# # INPUT_H=echo $ | cut -d . -f1.h # #这里我们利用cut来处理输入的.ui文件. # #得到一个.h的文件名# # INPUT_CPP=echo $ | cut -d . -f1.cpp # #同样的道理,利用cut产生一个.cpp的文件名# # uic -o $INPUT_H $INPUT_UI # #这里就是利用.ui产生.h的文件# # uic -i $INPUT_H -o $INPUT_CPP $INPUT_UI # #利用.h和.ui产生.cpp文件. # # # #我门把这个文件存为myuic.并切chmod +x变成可执行档案. 然后cp到/usr/bin上面.如果您在电脑中没有root的权限. 可以在自己的$HOME目录中做一个bin的Directory出来. 然后去编辑您的.bash_profile (这里假设您用的是bash) 如果您的.bash_profile中本身已经有了PATH这段文字,那么您只要在原本的PATH后面加上:$HOME/bin就可以了.如果没有那么就在您的.bash_profile中写入:PATH=$PATH:$HOME/bin export PATH这样您以后就可以直接执行myuic这个文件了.现在试试看用myuic来处理刚刚的那个form1.ui这个文件吧.先把旧的.h .cpp都删除掉: rm -f *.cpp *.h 然后用myuic来生成新的.cpp .h文件: myuic form1.ui 这时候用ls就会看到form1.cpp form1.h form1.ui这三个文件了这时侯我们只需要写一个小的main.cpp就可以编译form1.cpp了. main.cpp非常的简单#include form1.h #include int main(int argc, char *argv) KApplication app(argc, argv, Form1); /KDE是建立在QT的基础上得所以KApplication /所以kapp.h实际上包含了qapplication.h Form1 *form1=new Form1(); form1-show(); app.setMainWidget(form1); return(app.exec(); 基本上来说,很简单.然后当然就是编译啦.我建议写出来的东西都用Kdevelop来解决.首先Kdevelop 介面非常的友善.又能省下写Makefile的麻烦.打开Kdevelop以后,选择项目-新建, KDE2-Normal, 然后选择Next,在这一页中.注意不要在任何选项中打x,因为我们用不到.反而会增加麻烦.最后一直next,然后create , exit.这时侯我们就已经有一个新的项目可以用了.在menu中选择: 项目-添加现存文件.然后把qt_program中的form1.cpp form1.h和main.cpp加入.这时候只要按一下F9 , Kdevelop就会自动帮您把程式compile出来.并且执行.程式执行后,我们不能用click那个Exit Button退出程式.因为我们并没有给他退出的信号.现在让我们来把程式码作些改动:# #form1.h #ifndef FORM1_H #define FORM1_H #include class QPushButton; class Form1 : public QDialog Q_OBJECT public: Form1(QWidget *parent=0, const char *name=0); QPushButton* PushButton1; ; #endif / FORM1_H# #form1.cpp #include form1.h #include #include Form1:Form1(QWidget* parent, const char* name): QDialog(parent, name) setCaption(tr(Form21); PushButton1=new QPushButton(this,PushButton1); PushButton1-setGeometry(QRect(130160161,71); PushButton1-vsetText(tr(Exit); connect(PushButton1, SIGNAL(clicked(), kapp, SLOT(quit(); Form1:Form1()# #main.cpp保持不变.经过一番简化.程式码马上简单很多了. 这里我们除了把一些由QT Design做出的不必要的code挑除以外.对form1.cpp 做了两个小改动. 1.增加了#include 这个head file. 2.我们把: connect(PushButton1, SIGNAL(clicked(), PushButton1, SLOT(setFocus(); 改变为connect(PushButton1, SIGNAL(clicked(), kapp, SLOT(quit();同样的信号传送,但是目标对象有所改变.现在目标将作用在kapp上面也就是我们的主程式(main application),而SLOT则是呼叫quit(),现在Kdevelop中更改程式码.然后按下F9 .等待程式运行.这时侯我们的程式,只要在那个Exit的Button 上面用mouse click一下.这个程式就完全关闭了.现在我们在这个PushButton中再增加一些功能.我们来看看QT Designer中的ToolTip 功能.如果您的QT Designer中Property Edit并没有自动出现.那么请在QT Designer 中选择Menu中的Windows然后选择Property Edit.只要在PushButton1那个Button 上面用mouse click一下.就可以对Pushbutton1的Property进行编辑.在Property Edit中的ToolTip后面可以进行文字输入的地方,打入下面的文字:Click On this Button Will Exit Main Window.然后sava文件. (Form1.ui)在用我们的小script呼叫uic程式把, Form1.ui转成Form1.h和Form1.cpp myuic form1.ui 这时侯我们来观察生成的form1.cpp文件,我们会发现现在这里面比一前多了些东西. 现在这里多了一行: QToolTip:add( PushButton1, tr( Clicke On this Button Will Exit Main Window. ) ); 这里,我们用QToolTip中的add,在Object (PushButton1)上面加入Clicke On this Button Will Exit Main window.这个字幕.现在我们在前面那个被我们简化的form1.cpp中,加入上面那行程式码,因为我们需要调用到QToolTip所以我们也要把qtooltip.h给include进去. # #form1.cpp #include form1.h #include #include #include /因为我们需要用到QToolTip所以,这里要加入qtooltip.h Form1:Form1(QWidget* parent, const char* name): QDialog(parent, name) setCaption(tr(Form21); PushButton1=new QPushButton(this,PushButton1); PushButton1-setGeometry(QRect(130160161,71); PushButton1-setText(tr(Exit); QToolTip:add(PushButton1, tr(Click On this Button Will Exit Main Window.); connect(PushButton1, SIGNAL(clicked(), kapp, SLOT(quit(); Form1:Form1()# # 这时侯,重新编译这个form1的程式.您就会看到,当您把mouse移动到Exit那个按钮的时侯. 停留差不多一两秒钟. Click On this Button Will Exit Main Window的字样就会出现.QPushButton中还有一个常用的功能就是setEnabled了.setEnabled通过TRUE和FALSE这两个值.可以决定这个扭是否可以被使用者按下. 我们现在在QT Designer中的Property Edit中把Enable选择成FALSE,然后用myuic生成新的程式码. $myuic form1.ui 这时候再去观察form1.cpp会发现里面多了一行PushButton1-setEnabled( FALSE );这一行就把PushButton1设置为不可使用了.如果需要PushButton1可以正常的被Click,那么只要用PushButton1-setEnabled(TRUE)就可以了.提示:最常用的作法通常是做出一个SLOT或者一个判断语句,来设定PushButton的状态.QPushButton还有一各场常被用到的功能就是Font (字体的设定)在QT中,我们通过QFont可以设定字体的大小,种类. 在QT Designer中的Property Edit中.有一个Font的选项.我们在Font后面的那个.上面按一下,就会出现一个可以选择font的window.这里我们以Courier(adobe) 24号字为例子.选择后, Save,然后观察重新用uic生成的.cpp程序码.我们会发现主程式中多出了下面这些程式码:QFont PushButton1_font( PushButton1-font() ); PushButton1_font.setFamily( adobe-courier ); PushButton1_font.setPointSize( 24 ); PushButton1-setFont( PushButton1_font );后面还多出一个bool Form1:event( QEvent* ev ).这里我们先不要去理会bool Form1:event( QEvent* ev )只看下面这四行就好了:1. QFont PushButton1_font( PushButton1-font() ); 2. PushButton1_font.setFamily( adobe-courier ); 3. PushButton1_font.setPointSize( 24 ); 4. PushButton1-setFont( PushButton1_font );第一行是用QFont生成PushButton1_font. PushButton1_font是为了给PushButton1做字体设定第二行是告诉PushButton1_font使用那种字型.我们这里使用的是adobe-courier 第三行用了setPointSize设定了我们需要用到多大的字,这里我们用的是24号字. 第四行就真正的把这些值给到了PushButton1中.也就是说告诉PushButton1去改变字体的显示. 加入下面的代码以后,重新编译form1,就会看到那个按钮中的Exit这几个字明显的变大了.字体也改变了. 提示:通常在设定字体的时侯.都是用#define的方式在文件的开头宣告出来. 例如#define FONT_SIZE 24 然后在设定时用PushButton1_font.setPointSize(FONT_SIZE) 这样当您要改字体的时侯,只要把#define FONT_SIZE后面的值改了整个程式中所有的字体就都改变了.而省去了在需要改变字体的时侯, 一个个的去改变没一个setPointSize中的值PushButton是非常之常用的一个东西.可以说是任何程式都不可少的.通常最常见的用途就是作为退出按钮,对话窗口的选择按钮等等.QLabel的使用:现在我们再来看看QLabel的用法.在QT Designer中,用Mouse选择Text Label,(就是那个画了个A的图标.)然后用Mouse画出一个随便大小的Text Label.再用Mouse在这个Label上面Double Click一下.将跳出的Window中的那个TextLabel1改成My Label.然后按Save保存文件.用uic转成.cpp和.h文件.这使侯,我们发现,在.h文件中,多出了class QLabel; /这里告诉程式,我们下面需要用到QLabel QLabel* TextLabel1; /用QLabel生成*TextLabel1在.cpp中,我们则看到了多出下面这些东西.#include /这就不用我多说了吧, include进qlabel.h因为我们的QLabel需要TextLabel1 = new QLabel( this, TextLabel1 ); /定义TextLabel1 TextLabel1-setGeometry( QRect( 130, 120, 171, 91 ) ); /设定TextLabel的位置TextLabel1-setText( tr( My Label ) ); /还既得我们输入的My Label吧.也就是给TextLabel1定的/显示出来的东西.就是用setText在这里设定的.现在我们把这些加入到我们前面写的那个程式中.将上面的东西加入到form1.h和form1.cpp中. 不过我们这里需要做一点小小的改变.就是把TextLabel1的位置远一下.放造屏幕的最左上角.我门把: TextLabel1-setGeometry( QRect( 130, 120, 171, 91 ) ); 改换成: TextLabel1-setGeometry( QRect( 0, 0, 171, 91 ) );重新编译我们的程式.就会看到在程式窗口的最左上角,有一排文字的出现.文字就是我们的TextLabel中定义的My Label. 现在回到我们的程式部份.在前面的PushButton中,我们给我们的PushButton定义了字型及字体.实际上,字型及字体的定义.在QT中是通用的.我们可以用一样的方法来定义QLabel的字体.我们现在在程式中加入: QFont TextLabel1_font( TextLabel1-font() ); TextLabel1_font.setFamily( adobe-courier ); TextLabel1_font.setPointSize( 24 ); TextLabel1-setFont( TextLabel1_font ); 这样我们就把这个TextLabel改成了跟前面PushButton一样的字体courier (adobe) 24号字.大家常常能看到QT中的TextLabel是用图片来显示的.实际上,这也很简单.我们在QT Designer中, 首先在我们刚刚生成的那个TextLabel上面用Mouse Click一下.把Property Edit的Focus Set到我们得TextLabel上面. (如果您刚刚没有用Mouse在您的QT Designer上面乱按的话.那么您的Property Edit中的Focus应该本身就已经在TextLabel上了)这时侯,我们在Property Edit中找一个叫做pixmap的东西.在pixmap后面的.中按一下,就出现了一个新的让您还则图片的视窗. QT Designer中目前可以接受的图片格式为(这篇文章用的是QT Designer 1.1)bpm, jpeg, pbm, pgm, png和ppm.所以大家随便找一个上面格式的图片.然后选择OK.这时侯您就会发现那个TextLabel变成您选择的图片了.也许您会发现,图片并没有完全显示出来,而是只显示了一部分.(如果您选择的图片大过您的TextLabel的话)这是很常见的.在pixmap底下,有一个scaledContents的选项.只要把选项后面的值改成True就好了.这时侯您看到的就是一个经过平衡收放过大小的图片了.保存(Save)起来.让我们来看看程式码这边是如何处理这些图片的吧. 首先我们看到的是在.cpp的文件中,多出了: #include #include 这两个文件.这些都是处理图片时需要的. 后面也许大家就头大了. static const char* const image0_data = xxxxx xxxxx xxxxx xxxxx . .; 好长的一段.这些是什么呢?看上去满复杂的.不用怀疑,这就是您放进去的那个图片.只不过这里是用xpm的格式来处存的.什么事XPM呢? 其实XPM是XPixMap的简称. XPM是Linux中X11的一种图像处存的方法. 在XPM中,图像被允许用ASCII文字模式来保存起来.而XPM的另一个特性就是可以直接被C Compiler所接受.也就是说您可以直接把XPM的图片编译到您的程式中.把XPM直接编译到程式中有两个最大的好处:第一点是程式本身如果有很多图片,用XPM全部编译进程式中.就避免了在发行程式得时侯,需要附带很多图片的麻烦. 第二点就是相对来说,被编译进程式的图片,对于一般的普通使用者来说,要改起来会比较麻烦些. 当然,如果说您不准发行Open Source Code的程式.在没有Source Code的情况下.想要改您放放入的图片,就更家困难了.但是相对的,也有一些不便性: 程式码本身会加大很多图片的更改性不灵活接下来,我们看到了下面的程式码:QPixmap image0( ( const char* ) image0_data ); image0_data就是前面那个XPM的图片啦TextLabel1-setPixmap( image0 ); 这里是告诉TextLabel1去使用并且显示image0 (image0_date) TextLabel1-setScaledContents( TRUE ); 打开自动平衡收放图片大小的功能.QPixmap本身其实就接受xpm档案.所以我们可以不用把XPM的Source编译进程式中.而改用QPixmap pixmap(image.xpm)的形式.当然,我们需要把图片文件转换成XPM的格式.这里我们用到了Linux中本身为我们准备好的工具convert. convert本身支持非常多的图片各式的转换. 如果您有兴趣,可以用man convert来看看convert的详细内容.这里我只介绍如果把一个图片文件转换成xpm的格式.我选择的是Linux中的代表图片.一只可爱的小企鹅-logo.gif,相信每一个安装了linux的人,应该都可以找到这个图片吧.您可以试这用locate logo.gif来寻找.找到以后, 把logo.gif复制到程式放有form1程式码的目录下.然后用下面的指令来作图片的格式转换: convert logo.gif logo.xpm 这时侯,我们就可以看到目录中多了一个logo.xpm的文件了.现在我们回到我们的form1程式码中.在前面加入#include 然后在TextLabel的后面任何地方,加入下面三行程式码:QPixmap pixmap(logo.xpm); /这里就是告诉pixmap我们刚刚convert出来的那个图片TextLabel-setPixmap(pixmap); /让TextLabel调用/显示pixmap (logo.xpm) TextLabel-setScaledContents( TRUE ) ; /打开自动平衡收放图片大小的功能记住喔,一定不能在TextLabel = new QLabel( this, TextLabel1 );以前加入喔! 这时侯重新编译我们的程式码,在新的程式中,您就可以看到那只可爱的小企鹅了.您也许会发现企鹅胖的有点变形.那是因为自动平衡是根据您的TextLabel的大小来收放图片的. 所以我们只要把: TextLabel1-setGeometry( QRect( 0, 0, 171, 91 ) ); 改换成: TextLabel-setGeometry( QRect( 0, 0, 171, 191 ) ); 也就是说把高度增加100,重新编译以后.可以看到,企鹅的大小变得正常多了. Label也是最常用的组件.通常被用为在视窗中的文字显示.RadioButton的简介:接下来让我慢看看RadioButton.在QT Designer中,有一个圆圈圈的图案,在圆圈中有个黑色的实心圆圈.那个就是RadioButton了.现在我们在我们的form1中,增加一个RadioButton. 然后来观察程式码.在.h文件中,多出了两行class QRadioButton; /告诉程式我们需要用到QRadioButton 和QRadioButton* RadioButton1; /QRadioButton *RadioButton1在.cpp的文件中出现了下面三行程式码,以及一个include文件#include /QRadioButton所需要的include文件RadioButton1 = new QRadioButton( this, RadioButton1 ); /生成一个新的QRadioButton在介面this上/ this就是只当前的主介面.也就是我们的/ Form1 : public QDialog /白话文的方法来说呢,就是我们这个程式的/主显示视窗.相信大家已定很熟习了吧.RadioButton1-setGeometry( QRect( 260, 60, 151, 61 ) ); /通过setGeometry(QRect()来设定我们这个/ RadioButton的大小RadioButton1-setText( tr( RadioButton1 ) ); /用setText()来给我们的这个RadioButton /命名.这里这里名为RadioButton1将上面这些程式码加入到我们的form1.h和form1.cpp中,重新编译程式,我们就看到了一个名为RadioButton1 的RadioButton了.RadioButton除了可以用到PushButton中的setEnabled( FALSE )的选项来Disable这个RadioButton 以及在QT中通用的setFont以外,还提

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论