QT入门经典
示范使用Qt 进行编程的代码的片断。它会给你一个“大的图画”。如果你想要完全的在 C++中进行编程,不使用任何设计工具的帮助下在代码中设计你的界面,请阅读教程。教程1 就是被设计成把你带入Qt 编程的一个教程,它更强调的是编写代码而不是一个特征的漫游。教程2 是一个更加真实的例子,示范了如何编写菜单、工具条、文件的载入和保存、对话框等地那个。如果你想使用一个设计工具来设计你的用户界面,那么你至少要先阅读 Qt 设计器手册的前几章。在这之后,学习一下上面提到的纯粹的C++教程(教程1 和教程2)还是很值得的。到现在为止,如果你已经完成了一些小的可以工作的应用程序并且对 Qt 编程i你创建一个窗口部件的时候,它是不可见的。你必须调用 showO来使它变为可见的。return a execO这甲就是 maino把控制转交给QL,并且当应用程序退出的时候 execO就会返回。在 execO中,ot接受并处理用户和系统的事件并且把它们传递给适当的窗口部件你现在可以试着编译和运行这个程序了。编译编详一个C艹+应用程序,你需要创建一个 makefile。创建一个Qt的 makefile最容易的方法是使用Q提供的连编工具 qmake。如果你已终把 main cpp保存到它自己的目录了,你所要做的就是这qmake -projectgmake第一个命令调用 qmake:米生成一个pro(项目)文件。第一个命令根据这个项目文件米生成一个(系统相关的) makefile。你现在可以输λmake(或者 nmake,如果你使用Ⅴ isual studio),然后运行你的第一个Qt应用程序!行为j你运行它的时候,你就会看到一个被单一按钮充满的小窗口,在它上面你可以读到著名的词: ellow World!练习试着改变窗口的人小。按下按钮。如果你在X窗口下运行,使用- geometry选项(比如,- geometry100x200+10-20)来运行这个程序现在你可以进行第二章了Qt教程第二章:调用退出1·×uit你已经在第一章中创建了一个窗口,我们现在使这个应用程序在用户让它退出的时候退出。我们也会使用一个比默认字体更好的一个字体/水冰水木永水水永水水水水*水木水水水水永冰水水水木永水水赤本水**水尔水水水泳水木水Qt教程一-2水水水水水水水水水水水水水水水冰水水水水冰水水水水水水小水*水水水本水水水水水*水水水水水水水水水水水水水水水水水水水#include #include int main( int argc, char x argvQApplication a( argc, argvQPushButton quit("Quit",0);quit.resize( 75, 30);quit. setFont( QFont("Times", 18, QFont: Bold ));QObject: connect( &quit, SIGNAL(clicked), &a, slot(quitO))a. setMain Widget( &quitquit. showoreturn a exec(;行一行地解说井 include因为这个程序使用了 FOnt,所以它需要包含 font. h。Qt的字体提取和X中提供的可怕的字体提取大为不同,字体的载入和使用都已经被高度优化了QPushButton quit("Quit,0)这时,按钮显小“Quit¨,确切的说这就是当用户击这个按钮时程序所要做的。这不是一个巧合。因为这个按钮是一个顶层窗口,我们还是把0作为它的父对象。quit. resize( 75, 30);我们给这个按钮选择了另外一个大小,因为这个文本比“ Hello world!”小一些。我们也可以使用QFontmetrics来设置正确的大小quit. setFont( QFont( "Times", 18, QFont: Bold):这里我们给这个按钮选择了一个新字体, Times字体中的18点加粗字体。注意在这里我们调用了这个字体。你也可以改变整个应用程序的默认字体(使用 APplicatio: setFont(QObject: connect( &quit, SIGNAL(clicked), &a, SLOT(quito));connect许是Q中最重要的特征了。注意 connect0是 Qobject中的一个静态函数。不要把这个函数和 socket库中的 connecto搞混了。这一行在个Q对象(直接或间接继 QObject对象的对象)中建立了一种单向的连接。每一个Q对象都有 signals(发送消息)和 Slots(接收消息)。所有窗口部件都是Q对象。它们继承QWidget, Tf QWidget继承 QObject这里quit的cliκkew信号和a的qui糟连接起来了,所以当这个按钮被按下的时候,这个程序就退出了。信号和槽文档详细描述了这一主题。行为当你运行这个程序的时候,你会看到这个窗口比第一章中的那个小一些,并且被·个更小的按钮充满。(请看编译来学习如何创建一个 makefile和连编应用程序。)练习试着改变窗凵的大小。按下按钮。注意! connecto看起来会有些不同。是不是在 QPush Button中还有其它的你可以连接到quit的信号?提示: QPushButton继承了QButton!绝大多数行为。现在你可以进行第三章了Qt教程一—第三章:家庭价值Quit这个例子演示了如何创建一个父窗口部件和子窗口部件。我们将会保持这个程序的简单性,并且只使用一个单一的父窗口部件和一个独立的子窗口部件半*半*半*半半米半半农半*半*半半半容半半半半半半半*半半岑容半半半米半半半农半半半半半半半米半半半*半半半*半半半半半半半水水*Qt教程一-3本浓浓*********淋浓***********米**********米家******米容/#include #include #include #include int main( int argc, char **argyQApplication a( argc, argyQVBox boxbox.resize( 200, 120QPushButton quit( "Quit",&box )quit. setFont( QFont("Times", 18, QFont: Bold));QObject: connect( &quit, SIGNAL(clicked o), &a, sloT(quitO))a. setMain Widget( &box )box. showOreturn a execo:一行一行地解说include class my widget: public Q WidgetpublicMy Widget( QWidget parent=0, const char name=0)My Widget: My Widget( Q Widget*parent, const char *nameQWidget( parent, namesetMinimumSize( 200, 120)setMaximumSize( 200, 120)QPushButton*quit=new QPush Button("Quit", this,"quit")quit->set Grcomctry( 62, 40, 75, 30);lit- >set Font( QFont("Times", 18, QFont: Bold));connect( quit, SIGNAL(clicked), qApp, slot (quito))int main( int argc, char *argvQApplication a( aryc, argvMy Widget w:wset Geometry(100,100,200,120);a.setMain Widget( &ww.snowreturn a execo;行一行地解说class My widget: public QWidgetpublicMy Widget( QWidget"parent=0, const char *name=0)这里我们创建了一个新类。因为这个类继承了 WIdget,所以新类是一个窗口部件,并且可以最为一个顶层窗口或者子窗口部件(像第三章电面的按钮)这个类只有一个成员函数,构造函数(加上从 QWidget继承来的成员函数)。这个构造函数是一个标准的Qt窗口部件构造函数,当你创建窗口部件时,你应该总是包含个相似的构造函数。第一个参数是它的父窗口部件。为了生成一个顶层窗口,你指定一个空指针作为父窗口部件。就像你看到的那样,这个窗口部件默认地被认似是一个顶层窗第二个参数是这个窗口部件的名称。这个不是显示在窗口标题栏或者按钮上的文本。这只是分配给窗口部什的一个名称,以后可以用来查找这个窗口部件,并且这里还有一个方便的调试功能可以完整地刎出窗口部件层次My Widget: My Widget( Q Widget parent, const char *nameQWidget( parent, name构造函数的实现从这里开始。像大多数窗口部件一样,它把 parent和name传递给了 WIdget的构造函数setminimumSize( 200, 120setMaximum Sizc( 200, 120);因为这个窗口部件不知道如何处理重新定义大小,我们把它的最小大小和最大大小设置为相等的值,这样我们就确定了它的大小。在下一章,我们将演示窗部件如何响应用户的重新定义大小事件lit=new QPushButton( Quit", this, quit")quit->set Geometry 62, 40, 75, 30);quit->setFont( QFont("Times",18, QFont: Bold))这里我们创建并设置了这个窗部件的一个名称为“qut”的子窗凵部件(新窗部件的父窗口部件是this)。这个窗口部件名称和按钮文本没有关系,只是在这情况下碰巧相似。注意quit是这个构造函数中的局部变量。 My Widget不能跟踪它,但Qt可以,当My Widget被删除的时候,默认地它也会被删除。这就是为什么 My Widget不需要一个析构函数的原因。(另外一方面,如果你选择删除一个子窗口部件,也没什么坏处,这个子窗口部件会自动告诉Q它即将死亡。)setGeometryO调用和上一章的 moved和 resize是一样的。connect( quit, SIGNAL(clicked), aPp slOt(quito))因为 My Widget类不知道这个应用程序对象,它不得不连接到Qt的指针gApp个窗口部件就是一个软件组件并且它应该尽量少地知道关于它的环境,因为它应该尽可能的通用和可重用知道了应用程序的名称将会打破上述原则,所以在一个组件,比如 My Widget,需要和应用程序对象对话的这种情况下,Ωt提供了一个别名,qAppint main( int argc, char argyAPplication a( argc, argv);My Widget W;w.setGeometry(100,100,200,120);a.setMain Widget( &w )
用户评论
内容很受益!
下载了几个类似的资料,希望比较一下,这个好像不错。