使用Qt Creator向导创建一个QtGui应用程序,会生成一个.pro工程定义文件和几个.h/.cpp源代码文件。

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

QT       += core gui

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();
}

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

第一步先创建了一个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和窗口绑定。

Qt学习笔记(一) 第一个Qt应用程序相关推荐

  1. Spring学习笔记:第一个Spring Boot程序HelloWorld

    Spring学习笔记:第一个Spring Boot程序HelloWorld 一.跟着 Spring 了解技术趋势 1.看看 Spring 5.x 的改变暗示了什么 2.Spring Boot 和 Sp ...

  2. QT学习笔记(2)----- QT安装教程

    简介 Qt是跨平台的图形开发库,目前由Digia全资子公司 Qt Company 独立运营,官方网址:  http://www.qt.io/  也可以访问Qt项目域名:http://qt-projec ...

  3. QT学习笔记(1)----- QT简介

    名字由来 在<C++ GUI Programming with Qt 4>里有这么一段介绍: A Brief Histroy of Qt: The letter 'Q' was chose ...

  4. QT学习笔记(六)——QT弹出对话框并在主窗口调用对话框的信息

    QT弹出对话框并在主窗口调用对话框的信息,显示影像 最近封控,大部分时间都在自己学习写代码,有点feel 了哈,自己摸出来一个简单的qt 界面,也实现了自己想要的功能.本篇博客主要记录一下,如何弹出对 ...

  5. C++ Qt学习笔记(3)QT中的文本处理

    1. 富文本和纯文本的概念: 纯文本: 例如一个txt文件打开,里面只有文本内容,除此之外什么都没有,非常单调,这既是纯文本. 富文本:   例如一个.doc的word文件,打开之后,不但有文字,还有 ...

  6. Qt学习笔记,Qt程序架构设计要旨

    Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...

  7. Qt学习笔记之MySQL数据库

    一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...

  8. Qt学习笔记之数据库

    一.数据库简介 1.1.数据和数据库(DB) 用计算机进行数据处理,首先就要把信息以数据形式存储到计算机中,故数据是可以被计算机接受和处理的符号.根据所表示的信息特征不同,数据有不同的类别,如数字.文 ...

  9. Qt学习笔记之文件处理

    Qt提供了通用的文件处理类QFile和处理文本的QTextStream类和处理二进制数据的QDataStream类,这些流操作极大地方便了对文件的督促存储.对文件信息和目录进行操作的类是QfileIn ...

最新文章

  1. 脑科学真的可以启发AI吗?
  2. mdp文件-Chapter4-MD.mdp
  3. linux宏命令编辑,linux-vim宏定义(三)
  4. 总结DevExpress10个使用技巧
  5. navicat远程mysql_navicat 远程连接mysql
  6. Fiddler快速入门
  7. 玩客币如何转账如何交易链克
  8. android摄像头(camera)之buffer管理
  9. windowsPE制作工具
  10. 基于形状图像检索的形状描述符评估——18.07.30
  11. 拉格朗日乘子法——从单约束到多约束的直观翻译
  12. 在线JSON转TSV工具
  13. java程序之飞机大战_java写飞机大战一
  14. jupyter notebook 常用魔法函数 Magic Function%time %timeit %who %pip %cd
  15. chrome浏览器打开网页默认全屏的方法_测试成功
  16. SONY ICX618AL/AQ 电路升级改造----第一章:初步方案确定
  17. C语言:打印二元一次方程的根
  18. 注册表禁止修改系统时间
  19. Android webView适配H5暗黑模式
  20. Firebug Lite:在IE上体验Firebug

热门文章

  1. mattermost
  2. 学生开始学术生涯的好方法
  3. pdf转word网站,亲测有效
  4. net.sf包JSONArray与JSONObject遍历
  5. Json and Go
  6. Js代码执行 变量的值 运算 变量提升
  7. 页面从输入 URL 到页面加载显示完成
  8. 政府安全资讯精选 2017年第六期 车联网和移动安全可能成为未来监管重点
  9. 戴尔携手英特尔揭示技术与员工潜能背后的真相
  10. Java 为什么要用框架?