Chinaunix首页 | 论坛 | 博客
  • 博客访问: 126186
  • 博文数量: 46
  • 博客积分: 571
  • 博客等级: 准尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-26 23:57
文章分类

全部博文(46)

文章存档

2012年(46)

我的朋友

分类: C/C++

2012-04-30 12:18:31

C++ Qt 03MainWindowQt Gui编程

摘自:http://www.cnblogs.com/rophie/archive/2012/04/02/2429877.html

 

在上节中说道,Qt Creator自动为我们生成了四个文件,分别是:一个.pro文件,两个.cpp和一个.h  接下来我们就来分析一下这几个文件。

 

首先打开HelloWorld.pro文件

 

QT       += core gui

TARGET = HelloWorld

TEMPLATE = app

SOURCES += main.cpp\

        mainwindow.cpp

HEADERS  += mainwindow.h

 

QT缺省使用了coregui

变量TARGET描述了目标文件的名称,即生成的应用程序的名字,默认采用工程文件所在的文件夹名字。

变量TEMPLATE描述了为建立目标文件而采用何种模板,即生成何种形式的Makefile文件,有以下5种模板

    应用程序 app,为建立一个Qt应用程序创建模板Makefile文件库 lib,为建立应用程序库创建模板Makefile文件

    子工程 subdirs,为建立子目录下的目标文件创建模板Makefile文件,子目录通过变量subdirs指定(子目录下的工程文件也需要指出使用何种模板)

    VC应用程序vcapp,Visual Studio 生成一个应用程序工程,仅仅用于Windos操作系统

    VCvclib,Visual Studio生成一个应用程序库工程,仅仅用语Windows操作系统

SOURCES - 应用程序中的所有源文件的列表。

HEADERS - 应用程序中的所有头文件的列表。

 

接下来就是mainwindow.h

 

1 #ifndef MAINWINDOW_H

 2 #define MAINWINDOW_H

 3

 4 #include <QtGui/QMainWindow>

 5

 6 class MainWindow : public QMainWindow

 7 {

 8     Q_OBJECT

 9    

10 public:

11     MainWindow(QWidget *parent = 0);

12     ~MainWindow();

13 };

14

15 #endif // MAINWINDOW_H

 

12两行,大家都是懂得C++的啊,所以什么#ifndef#define#endif的含义和用途就不再赘述了。

接着类MainWindow继承了QMainWindow类,QMainWindow提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。

clip_image001

标题栏下面一些是Menu Bar,用于显示菜单;再下面一点是Toolbars,用于显示工具条,注意,Qt的主窗口支持多个工具条显示,你可以把几个工具条并排显示在这里,就像Word2003一样;工具条下面是Dock Widgets,这是停靠窗口的显示区域,所谓停靠窗口就是像Photoshop的工具箱一样,可以在主窗口的四周显示;再向下是Status Bar,就是状态栏;中间最大的Central widget就是主要的工作区了。

 

下面是一个重要的东西:Q_OBJECT。这是一个宏,只有加入了Q_OBJECT,你才能使用QT中的signalslot机制,暂时先不深入研究。

接下来的就是MainWindow的构造函数和析构函数,mainwindow.cpp文件中具体实现。

 

    大致了解了之后,我们来新建一个工程,这次来勾选创建界面选项,完成之后我们会发现在项目视图中多了个界面文件mainwindow.ui,我们双击这个文件打开。

你发现了什么?对,可视化界面,直接编译运行会出现一个窗口。

    接下来我们从左边的工具箱中拖一个Label控件到窗口上并双击将它重命名为“Hello World”

 

clip_image002

编译运行,达到了上节我们用代码写出来的HelloWorld效果。

我们查看一下mainwindow.h中声明了一个UI文件: Ui::MainWindow*ui,并在MainWindow的构造函数中将此ui文件布局赋给了当前窗口:ui->setupUi(this);

 

我们接下来在MainWindow的构造函数中加入ui->label->setText("Hello Qt");就可以改变Label的当前的文字。

 

好了,这一节先说到这里,感觉自己写的很乱,呵呵,第一次写这种技术博客,语言组织的不太好,凑合着看吧,呵呵。

 

下节预告:《QT 的信号与槽机制》

 

 

作者
出处http://rophie.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

阅读(1270) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~