您的位置:首页 > 编程语言 > Qt开发

Qt学习笔记(一) 第一个Qt应用程序

2015-02-13 17:48 253 查看
使用QtCreator向导创建一个QtGui应用程序,会生成一个.pro工程定义文件和几个.h/.cpp源代码文件。

首先看工程定义文件的内容:

QT+=coregui

TARGET=firstQtApp

TEMPLATE=app

SOURCES+=main.cpp/

mainwindow.cpp

HEADERS+=mainwindow.h

QT+=表示需要加载的库模块。Core模块是每个Qt应用程序都需要的。因为这是一个Gui程序,所以加载了Gui模块。

TARGET=表示编译后可执行程序的名称。

TEMPLATE=表示应用程序的类型。这里是一个app程序。还可以是lib等。

SOURCES+=表示添加到工程里的源代码文件。

HEADERS+=表示添加到工程里的头文件。

再来看main.cpp里面的内容。这里面只有整个程序的主函数。代码如下:

#include<QtGui/QApplication>

#include"mainwindow.h"


intmain(intargc,char*argv[])

{

QApplicationa(argc,argv);

MainWindoww;

w.show();

returna.exec();

}


这段代码是由QtCreator向导自动生成的。

第一步先创建了一个QApplication的对象。每个Qt应用程序都必须有一个QApplication的对象。这个对象代表的就是这个应用程序本身。而且每个应用程序只允许有一个QApplication的对象。构造函数需要两个参数,这是Qt对命令行参数的支持。

第二步创建了主窗口对象。窗口/窗口部件是UI中的可视化元素,叫做widget。这相当于windows中的控件和容器。

第三步调用w.show()使窗口可见。

最后调用a.exec()将程序控制权交给Qt,程序开始进入事件循环,等待用户操作。

再来看MainWindow里面的代码:

首先是类声明:

#include<QtGui/QMainWindow>

#include<QLabel>

#include<QPushButton>

classMainWindow:publicQMainWindow

{

Q_OBJECT

public:

MainWindow(QWidget*parent=0);

~MainWindow();

//datamembers

private:

QLabel*label;

QPushButton*pushButton;

};

这个类继承自QMainWindow。由于定义了自己的信号和槽,所以在类的开头使用了Q_OBJECT宏。然后声明了两个窗口部件作为数据成员,QLabel和QPushButton。

类的实现代码:

#include"mainwindow.h"

#include<QVBoxLayout>

MainWindow::MainWindow(QWidget*parent)

:QMainWindow(parent)

{

label=newQLabel(tr("ThisismyfirstQtApplication"));

pushButton=newQPushButton(tr("Exit"));

QVBoxLayout*layout=newQVBoxLayout;

layout->addWidget(label);

layout->addWidget(pushButton);

connect(pushButton,SIGNAL(clicked()),

this,SLOT(close()));

QWidget*widget=newQWidget(this);

widget->setLayout(layout);

setCentralWidget(widget);

}

首先构造了两个窗口部件,使用布局管理中的QVBoxLayout(垂直布局),将两个部件添加到layout里面,从而布局这两个部件。然后将pushButton的clicked()信号和当前窗口的close()槽连接起来。当用户点下Button的时候,窗口的close()槽便会调用,从而关闭窗口。信号和槽有点类似于MFC中的消息映射。

然后使用一个widget来承载设置好的layout,最后将widget和窗口绑定。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: