首页 运维 网络学院 查看内容

qt指南

2005-6-12 17:13 665 0

摘要: 第一节:hello,world! 第一个程序仅仅是一个hello-world例子程序。它仅含一些能够使这个程...
关键词: 一个 按钮 QApplication quit hello 程序 字体 窗口 物件 QPushButton

第一节:hello,world! 第一个程序仅仅是一个hello-world例子程序。它仅含一些能够使这个程序运行起来的一些必要的代码。上面的图片是这个程序一张照片。 /********************************************************************** ** **Qt指南 第一节 ** **********************************************************************/ #include #include int main( int argc, char **argv ) { QApplication a( argc, argv ); QPushButton hello( "Hello world!", 0 ); hello.resize( 100, 30 ); a.setMainWidget( &hello ); hello.show(); return a.exec(); } 逐行展示: #include 这一行把Qapplication类的定义包含进来.在每一个Qt应用程序中必需有一个Qapplication 对象。Qapplication管理着所有的application-wide资源,例如默认字体和光标。 #include 这一行把Qpushbutton的定义包含进来。在参考文档中,提及的第一个类都要在需要文件的顶部被包含进来。 Qpushbutton是一个典型的GUI下压按钮,它能够被用户按下和释放。像每一个其它特件一样,它能够设置自己的外观和感觉。物件是用来处理用户输入和拖拽操作的用户接口。程序员可以改变它的全部的外观和感觉以及其它的一些次要的属性,例如颜色,也可以是内容。一个Qpushbutton可以显示文字或位图。 int main(int argc,char * argv){ main()函数是程序的进入点。在大多数情况下,当我们使用Qt时,main()仅仅是在进入控制Qt库之前进行一些初始值的设定,它将告认程序用户操作事作的一些情况. argc是中命令行中参数的个数,argv是命令行参数数组。这是一个C/C++特征。这并不是Qt特有的,虽然Qt执行这些参数(看下面)。 Qapplication a(argc,argv); a 是这个程序的Qapplication。在这里它被创建并执行一些命令行参数(就像在X11下的 -display 一样)。注意,所有被Qt识别出的命令行参数将会被从argv中移除(并且argc将会相应的减少)。有关的细节请参阅QApplication::argv() 文档。 注意:在Qt中,在进入window-system之前建立QApplication对象是最重要的。 QPushButton hello("hello world",0); 在这里,在建立QApplication之后,进入Window-system的第一句代码:一个Push Button被建立了。 这个按钮被设置成显示文本“hello world”,并且它自己成为一个窗口(因为按钮要进入的父窗口被设置成为了“0”)。 hello.resize(100,30); 这个窗口被设置成了100像素宽,30像素高(加上window-system框架)。在这里这不必关心这个按钮的位置,接受它的默认值就行了。 a.setMainWidget(&hello); 在这个应用中,这个按钮被选择成为main物件。如果用户关闭了main物件,这个应用就会退出。 您不必一定要有main物件,但大多数程序都有. hello.show(); 当物件被创建时它不会被显示。您必须呼叫show()便其可见。 return a.exec(); 当这个应用程序退出时,这里是main()把控制权交给Qt的exec() 的地方。 在exec()中,Qt接收到并执行用户或系统事件并把这些交给适当的物件。 } 行动: 您可以试着编译并执行这个程序。 当您运行它时,您将会看到一个小的窗口,它被一个小按钮填充着,并且您能看到这个有名的“hello world”。 练习: 试着去改变窗口的大小。按一下按钮。如果您运行的是X11,试着用-geometry(e.g. -gemometry 100x200+10+20) 选项运行它。 现在您可以进行第二节了。 第二节:呼叫“退出” 在第一节我们建立一个窗口,现在我们使这个应用程序在用户发出退出信号时能够退出。 我们也将使用一个比默认字体更让人激动的字体。 /**************************************************************** ** ** Qt tutorial 2 ** ****************************************************************/ #include #include #include int main( int argc, char **argv ) { QApplication a( argc, argv ); QPushButton quit( "Quit", 0 ); quit.resize( 75, 30 ); quit.setFont( QFont( "Times", 18, QFont::Bold ) ); QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) ); a.setMainWidget( &quit ); quit.show(); return a.exec(); } 逐行展示: #include 因为这个程序使用了QFont, 所以需要包含文件qfont.h。Qt的字体抽象同X提供的字体是不同。装载和使用这些字体都是被进行过高质最的最优化处理。 QPushButton quit("quit",0); 这一次,这个按钮被命名为“Quit”,并有当用户按这个按钮时也确实让它这么做。这并不一种巧合。我们仍然用0做为它的父窗口,因为这个按钮是一个顶级窗口 quit.resize(75,30); 我们为按钮选取另外一个尺寸,因为这次要显示的文本比"hello world"要稍微短一点。我们也可以使用QFontMetrics来设置合适的大小。 quit.setFont( QFont( "Times", 18, QFont::Bold ) ); 这里,我们为按钮选取一个新的字体,Time字体中的18点粗。 注意我们是在点的基础上的建立字体的。 使用改变默认字体的方法(使用QApplication::setFont())来改变整个应用程序的字体也是可以的。 QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) ); connect()可能是Qt最重的特征。注意: connect()是一个Qwidget静态函数。不要被socket()函数库中的connect()函数弄糊涂了。 这一行为两个Qt对象间的联系建立了一种方法,这些对象包括QObject的继承类,直接的,间接的。每一个Qt对象都包括信号(用来发送消息)和槽(用来接收消息)。所有的物件都是Qt对象。他们继承QWidget而成为QObject的继承类。 在这里,quit的clicked()信号同a的quit()槽联系起来,这样,当按钮被单击时这个应用就会退出。 信号与槽文档(the Singal and Solts documentation 这个文档在Qt的官方网站可以找到,译者注)将会就这个问题进行详细的描述。 行为: 当您运行这个程序时您将会看到一个比第一节更小的窗口,并且被一个比第一节更小的按钮填充着。 练习: 试着调整窗口的大小。按一下按钮。呀! connect()看起来使程序做了一点不同的事。 有其它的信号可以用来联结quit()吗?关键:QPushButton继承了QButton的大部分行为。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部