Qt学习笔记(一) 第一个Qt应用程序
使用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应用程序相关推荐
- Spring学习笔记:第一个Spring Boot程序HelloWorld
Spring学习笔记:第一个Spring Boot程序HelloWorld 一.跟着 Spring 了解技术趋势 1.看看 Spring 5.x 的改变暗示了什么 2.Spring Boot 和 Sp ...
- QT学习笔记(2)----- QT安装教程
简介 Qt是跨平台的图形开发库,目前由Digia全资子公司 Qt Company 独立运营,官方网址: http://www.qt.io/ 也可以访问Qt项目域名:http://qt-projec ...
- QT学习笔记(1)----- QT简介
名字由来 在<C++ GUI Programming with Qt 4>里有这么一段介绍: A Brief Histroy of Qt: The letter 'Q' was chose ...
- QT学习笔记(六)——QT弹出对话框并在主窗口调用对话框的信息
QT弹出对话框并在主窗口调用对话框的信息,显示影像 最近封控,大部分时间都在自己学习写代码,有点feel 了哈,自己摸出来一个简单的qt 界面,也实现了自己想要的功能.本篇博客主要记录一下,如何弹出对 ...
- C++ Qt学习笔记(3)QT中的文本处理
1. 富文本和纯文本的概念: 纯文本: 例如一个txt文件打开,里面只有文本内容,除此之外什么都没有,非常单调,这既是纯文本. 富文本: 例如一个.doc的word文件,打开之后,不但有文字,还有 ...
- Qt学习笔记,Qt程序架构设计要旨
Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...
- Qt学习笔记之MySQL数据库
一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...
- Qt学习笔记之数据库
一.数据库简介 1.1.数据和数据库(DB) 用计算机进行数据处理,首先就要把信息以数据形式存储到计算机中,故数据是可以被计算机接受和处理的符号.根据所表示的信息特征不同,数据有不同的类别,如数字.文 ...
- Qt学习笔记之文件处理
Qt提供了通用的文件处理类QFile和处理文本的QTextStream类和处理二进制数据的QDataStream类,这些流操作极大地方便了对文件的督促存储.对文件信息和目录进行操作的类是QfileIn ...
最新文章
- 脑科学真的可以启发AI吗?
- mdp文件-Chapter4-MD.mdp
- linux宏命令编辑,linux-vim宏定义(三)
- 总结DevExpress10个使用技巧
- navicat远程mysql_navicat 远程连接mysql
- Fiddler快速入门
- 玩客币如何转账如何交易链克
- android摄像头(camera)之buffer管理
- windowsPE制作工具
- 基于形状图像检索的形状描述符评估——18.07.30
- 拉格朗日乘子法——从单约束到多约束的直观翻译
- 在线JSON转TSV工具
- java程序之飞机大战_java写飞机大战一
- jupyter notebook 常用魔法函数 Magic Function%time %timeit %who %pip %cd
- chrome浏览器打开网页默认全屏的方法_测试成功
- SONY ICX618AL/AQ 电路升级改造----第一章:初步方案确定
- C语言:打印二元一次方程的根
- 注册表禁止修改系统时间
- Android webView适配H5暗黑模式
- Firebug Lite:在IE上体验Firebug