您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > QT学习笔记_经验篇
QT学习笔记(初识)2009-05-2111:13QT学习笔记(初识)查看RedHat自带QT库路径:/usr/lib/qt-3.1,查看目录qt3-1下是否有13个文件,若没有,则需要安装。主菜单-系统设置-添加程序-选中KDE软件开发-更新。在Linux下做一个五子棋的小游戏。在/home/下创建目录qt,编写一个小程序hello.cpp的C++文件。下面介绍hello.cpp源程序:#includeqapplication.h#includeqwidget.h//窗口类的头文件#includeqpushbutton.h//按键类的头文件intmain(intargc,char**argv){QApplicationa(argc,argv);QWidgetmainwindow;//定义主窗口对象mainwindow.setMinimumSize(20,10);//设置最小尺寸mainwindow.setMaximumSize(200,100);//设置最大尺寸QPushButtonhelloworld(HelloWorld!,&mainwindow);//调用了//QPushButton的第二个构造函数,//指定副部件为mainwindowhelloworld.setGeometry(20,20,160,60);//此函数是由其父类继承来的a.setMainWidget(&mainwindow);//设置mainwindow为主部件mainwindow.show();//显示窗口returna.exec();//存在一个while循环,等待用户发命令}窗口(类)QWidget按钮(类)QPushButton特性可关闭可点击共性可设大小可设大小两个类是从可视类派生来的,例如函数setGeometry是设置几何尺寸的,窗口和按钮两类都可调用,设置尺寸大小函数也是由其父类继承来的,两类都可以用。经编译:g++hello.cpp–ohello–lqt,编译器会报错,未发现所用到的头文件。分析错误原因:提示中说未找到程序中所用到的头文件,当编译程序时,编译器首先到特定目录下寻找原文件的头文件和函数库:头文件目录:/usr/include库文件目录:/lib/,/usr/lib/但QT库存放在目录/usr/lib/qt-3.1下,此文件里有三个重要的目录:/bin/;/lib/;/include/./bin里存放的是QT库的使用手册;/lib下存放的是库文件,即由原库文件生成目标文件*.o;/include下存放的是各库文件的声明。因此,在编译时,编译器找不到正确的文件,所以必须对环境变量做修改。方法一:敲入命令,这样可以暂时修改环境变量,设定其查找路径,但并不能保存修改,在下一次开机后,需要重新设置。1)#g++hello.cpp–ohello–lqt–I/usr/lib/qt-3.1/include2)#exportCPLUS_INCLUDE_PATH=/usr/lib/qt-3.1/include#g++hello.cpp–ohello–lqt以上两种方法等价。再次编译后仍旧有错,找不到库文件。指定库路径:1)#g++hello.cpp–ohello–lqt–L/usr/lib/qt-3.1/lib2)#exportLIBRARY_PATH=/usr/lib/qt-3.1/lib#g++hello.cpp–ohello–lqt最终生成可执行文件hello。其中,-lqt是连接QT库的参数语句,-lqt等价于-libqt.so,它是一个动态库,它包含了众多库文件,链接时只会把所需库文件链接进来,这样就不会使最终生成的文件过大。知识点:gcc-I+头文件路径-L+库文件路径-l+链接库方法二:将环境变量添加到/etc/profile/内,它是一个类似脚本的文件,每次开机都会执行里面的语句,即系统在开机时自动执行改变路径的命令,来修改环境变量。添加内容:CPLUS_INCLUDE_PATH=/usr/lib/qt-3.1/includeLIBRARY_PATH=/usr/lib/qt-3.1/libexportCPLUS_INCLUDE_PATHLIBRARY_PATH编译C++常用命令:(源文件hello.cpp)#qmake–v可查看qt版本#qmake–project产生一个工程文件qt.pro#qmake产生Makefile文件Makefile#make生成目标文件和可执行文件hello.o、qt。生成的Makefile缺少句子:LIBS:缺少-lqt,可手工加上。Qt学习笔记(Qt3库)上2009-05-2111:21//***********************************************************3.1创建第一个主部件创建主部件的方法是基于QWidget或QDialog类创建一个用户类。可以使用用户类通过公有继承派生于QWidget类,在其中调用一些成员函数来定义窗口外观。题目要求:创建一个空的窗口,并显示在屏幕上。大小为200*120.窗口大小不可调整。源程序:3-1.cpp#includeqapplication.h#includeqwidget.h#includeqpushbutton.h#includeqlabel.h//在类的声明里,我们只//需要包含新的成员。其它的//方法都从QWidget类中继承来:classMyMainWindow:publicQWidget{QPushButton*b;QLabel*l;public:MyMainWindow();};MyMainWindow::MyMainWindow(){//设置窗口的最大、最小尺寸//我们不需要添加this指针,//因为C++默认是现在的类setMinimumSize(400,300);setMaximumSize(400,300);b=newQPushButton(helloworld!,this);b-setGeometry(20,20,160,80);l=newQLabel(label,this);l-setGeometry(100,90,160,93);}intmain(intargc,char**argv){//创建要求的应用类对象aQApplicationa(argc,argv);//创建MyMainWindow类的对象,//并设置其为主视图MyMainWindoww;a.setMainWidget(&w);//显示主窗口对象,并且//它的子视图也会显示到屏幕w.show();//等待用户命令a.exec();}//**************************************************************QT库与用户的交互方式,例如按钮、滑块,是通过使用信号和槽。信号和槽是相互关联的函数题目要求:添加退出按钮3-5.cpp#includeqapplication.h#includeqwidget.h#includeqpushbutton.h#includeqlabel.h//在类的声明里,我们只//需要一个新的构造函数。//其它的成员都是从类QWidget中继承来的:classMyMainWindow:publicQWidget{QPushButton*b;QLabel*l;public:MyMainWindow();};MyMainWindow::MyMainWindow(){setGeometry(100,100,200,170);//setMinimumSize(400,300);//setMaximumSize(400,300);b=newQPushButton(Quit!,this);b-setGeometry(20,20,160,80);b-setFont(QFont(Times,18,QFont::Bold));l=newQLabel(this);l-setGeometry(10,110,180,50);l-setText(Ifyouclickthebuttonabove,\nthewholeprogramwillexit);l-setAlignment(AlignCenter);//这里按钮b的clicked()信号与qApp的槽quit()链接,当点击按钮时,将产生QPushButton::clicked()信号,导致qApp的quit()槽被执行,从而程序退出。那么,什么是qApp呢?qApp是Qt的一个内置指针。它总是指向程序中的QApplication对象(这里指a)。//connect(b,SIGNAL(clicked()),qApp,SLOT(quit()));}intmain(intargc,char**argv){QApplicationa(argc,argv);MyMainWindoww;a.setMainWidget(&w);w.show();returna.exec();}//**************************************************************信号和槽的使用题目要求:利用滑块来改变LCD显示的值4-1.cpp#includeqapplication.h#includeqwidget.h#includeqpushbutton.h#includeqfont.h#includeqlcdnumber.h#includeqslider.h//在类的声明里,我们只//需要一个新的构造函数。//其它的成员都是从类QWidget中继承来的:classMyMainWindow:publicQWidget{QPushButton*b;QLCDNumber*lcd;QSlider*slider;public:MyMainWindow();};MyMainWindow::MyMainWindow(){setGeometry(100,100,300,200);//setMinimumSize(400,300);//setMaximumSize(400,300);b=newQPushButton(Quit!,this);b-setGeometry(10,20,80,40);b-setFont(QFont(Times,18,QFont::Bold));lcd=newQLCDNumber(2,this);lcd-setGeometry(100,10,190,180);slider=newQSlider(Vertical,this);slider-setGeometry(10,60,80,130);//下面一行代码,使点击按键1,程序退出connect(b,SIGNAL(clicked()),qApp,SLOT(quit()));//下面一行链接滑块和显示器,使数字随着滑块的移动而改变connect(slider,SIGNAL(valueChanged(int)),lcd,SLOT(display(int)));}intmain(intargc,char**argv){QApplicationa(argc,argv);MyMainWindoww;a.setMainWidget(&w);w.show();returna.exec();}//**************************************************************用户自定义槽,需另外把自定义类做成声明函数,类中成员函数的实现可放在源函数里。4-3.h(类的声明)#includeiostream.h#includeqapplication.h#includeqwidget.h#includeqpushbutton.h#includeqfont.hclassMyMainWindow:pub
本文标题:QT学习笔记_经验篇
链接地址:https://www.777doc.com/doc-5232465 .html