从零开始做3D地图编辑器(四)(基于QT与OGRE)

四、QT基本知识

 

回到QT,先在VS中新建一个QT Application,项目里面有几个目录:

1、              Form Files目录,它里面放的是使用QT designer制作的基于XML的布局文件,双击它就会自动进入QT designer。

2、              Generated Files目录,它里面放的是一些临时生成的文件,这些文件用来处理QT的信号和槽等机制。

3、              Resource Files目录,它里面放的是基于XML的资源文件,你可以在窗体里面使用它们。

4、              Header Files和Source Files这两个和VS默认是一样的。

理解了目录结构之后,先来试着写一个Hello World,先把除了main.cpp之外的所有文件移除(使用QT designer会提高制作效率,但是会让QT入门门槛变高)!打开main.cpp,仅保留以下代码:

 

 

编译通过。运行没有任何反应,因为还没有往里面增加任何东西。

 

在代码中,Main函数是C语言的入口,之后申请的QApplication用来管理控制流和主要设置,这是核心,一定要保留。

按钮是GUI中最基本的一个控件,先看看怎么增加一个按钮。使用按钮控件必须先包含头文件:

 

 

然后在QApplication a(argc, argv);return a.exec();中间插入下面代码:

 

 

      代码第一行是申请一个按钮,并把按钮的Caption标题设为HELLO,第二行表示这个按钮出现在屏幕座标(100,100)的位置,宽高为(300,300),最后一行是显示这个按钮,你可以尝试把它去掉看看效果(官方助手里有QPushButton的更多资料,请自行查看)。

 

      编译出来,发现屏幕上出现一个框,框里面有一个按钮,按钮可以点击,但是没有任何反应,因为还没有为这个按钮增加任何的槽(Slot)。在MFC对控件的处理一般是通过事件机制,而在QT中是使用信号(Signal)和槽(Slot)机制,其实你也可以把它理解为事件机制。

简单理解信号其实就是输入,而槽就是输出,拿按钮打比方,在一次点击中,这个点击,就是一个信号,而点击后的反馈,就是槽。

每一个控件都拥有一些默认的Signal和Slot,这些都可以在官方提供的助手中查看。

 

绑定Signal和slot是使用静态函数connect。函数原型是:

 

 

 

其中sender是发送者,而receiver是接收者,signal是信号,而method就是slottype里面提供了几种绑定方式,可以详细查看助手。

      先看一个例子,在上面代码中加入点击按钮后关闭应用程序的效果。很简单,只需要在

 

 

后面加入

 

 

编译运行,点击后窗体关闭。

这是使用默认槽的例子,有时候需要点击按钮之后执行自定义的效果,那么就需要使用自定义槽了。

 

 

下面是一个使用自定义Slot的例子,鼠标点击按钮之后,文本框文字会改变。

先加入一个QLabel控件,你先加入头文件:

 

 

然后在connect前加入

 

 

    先尝试编译一下,结果label没有出现在窗体里面!它当然不会出现在窗体里面,因为我们只是对Button使用了Show()函数,尝试加入label.show(),结果出现了两个窗体,一个里面有按钮,另一个里面有一个label。那么怎么把它们放在一起呢?

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/vickylh/archive/2010/05/18/5603613.aspx

发布了13 篇原创文章 · 获赞 1 · 访问量 5万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章