分享
 
 
 

qt指南

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

第一节: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的大部分行为。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有