QT学习笔记1:创建一个QT的空项目

初始QT,在创建QT项目时系统提供了几个不同的模板,点选模板,系统会自动为用户创建好一个基础框架方便开发。

这里,我们试着不适用系统提供的基础框架,自己创建一个空的QT项目。

1、创建工程

(1)进入QT界面,选择新建工程,在跳出的选项中选择其他项目—空的Qt项目,选择继续。

(2)为项目取名为blankProject,选择下一步。

(3)添加工程信息。

  创建完成后,系统会自动创建一个名为blankProject.pro的文件,为工程启动文件。为工程添加信息,工程创建完成。

1 # QT blank project
2 # author    hancq
3 # date      2016-08-05
4
5 QT += widgets
6
7 TARGET = blankProject

2、为工程添加文件

(1)main.cpp文件

  在工程名上右键选择“添加新文件”,选择C++ Source File 文件,文件名为main.cpp,选择下一步创建完成。

  此时,系统自动为我们创建了一个显示源文件main.cpp。接下来添加主函数代码。

1 #include <QApplication>
2
3 int main(int argc, char **argv)
4 {
5     QApplication app(argc, argv);
6
7     return app.exec();
8 }

  此时,这个工程已经可以编译通过了,但是没有执行任何内容。也不会有页面显示。

(2)添加一个界面类

  添加新文件,选择添加一个C++类,输入类名和继承的类,确认后自动创建了一个.cpp文件和.h文件。

  在创建文件和类时,系统会自动将文件信息增加到.pro文件中

  在main.cpp中增加初始化代码:

 1 #include <QApplication>
 2
 3 #include "widget.h"
 4
 5 int main(int argc, char **argv)
 6 {
 7     QApplication app(argc, argv);
 8
 9     Widget widget;
10     widget.show();
11
12     return app.exec();
13 }

  点击运行,出现了一个界面,一个空的QT项目创建完成。

3、在空的QT项目中增加自己想要的内容

  老规矩,Hello World,你懂得!

// main.cpp

 1 #include <QApplication>
 2
 3 #include "widget.h"
 4
 5 int main(int argc, char **argv)
 6 {
 7     QApplication app(argc, argv);
 8
 9     Widget widget;
10     widget.resize(640, 360);
11     widget.show();
12
13     return app.exec();
14 }

// widget.h

 1 #ifndef WIDGET_H
 2 #define WIDGET_H
 3
 4 #include <QWidget>
 5 #include <QLabel>
 6
 7 class Widget : public QWidget
 8 {
 9     Q_OBJECT
10 public:
11     explicit Widget(QWidget *parent = 0);
12
13 private:
14     QLabel *label;
15
16 signals:
17
18 public slots:
19
20 };
21
22 #endif // WIDGET_H

// widget.c

 1 #include "widget.h"
 2
 3 #include <QFont>
 4 #include <QPalette>
 5
 6 Widget::Widget(QWidget *parent) :
 7     QWidget(parent)
 8 {
 9     setWindowTitle(tr("一个空的QT项目"));
10
11     label = new QLabel(this);
12     label->setText(tr("Hello world!"));
13     label->setGeometry(200, 120, 300, 100);
14
15     /* set text size */
16     QFont ft;
17     ft.setPointSize(20);
18     label->setFont(ft);
19
20     /* set text color */
21     QPalette pa;
22     pa.setColor(QPalette::WindowText, Qt::red);
23     label->setPalette(pa);
24 }

  运行效果:

时间: 2024-10-03 13:38:53

QT学习笔记1:创建一个QT的空项目的相关文章

QT学习之路--创建一个对话框

Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学习之路:Qt学习之路(7):创建一个对话框(上)这个程序.编译出现 invalid use of incomplete type ‘class QPushButton’ findButton->setEnabled(!text.isEmpty()); ^ In file included from

Qt学习笔记(二)——qt空文档项目

/////////////2015/08/07/////////////// ////////////by xbw////////////////////// ///////////环境 Qt 5.3.1//////////// 学习的视频是QT4,多少有点问题,我用的QT5,在这个空文档项目中发现了问题, 在main.cpp中的头文件没有文件或目录,经过网上查找,发现QT升级5后的GUI归到Widget中了,所以呢,在5中我们就需要在pro中加上这么一句QT+= coregui widgets

DirectX11 学习笔记3 - 创建一个立方体 和 坐标轴

这个程序再进一步的将上一个程序 面向对象化. 把模型类独立出来.更加像一个框架. 在此中遇到了一个很逗比的问题,弄了一晚上,看了好几遍其他列子才找到.就是有些函数一定要放在Render里面实时更新,而不是只放到初始化InitModel里面 因为当要渲染多个物体的时候,缓冲区的内容是要随设备变化的. 话不多说直接上代码 主程序main #include "D3DBase.h" #include "Axis.h" #include "Cube.h"

DirectX11 学习笔记3 - 创建一个立方体 和 轴

该方案将在进一步的程序 面向对象. 独立的模型类.更像是一个框架. 其中以超过遇到了一个非常有趣的问题,.获得一晚.我读了好几遍,以找到其他的列子.必须放在某些功能Render里面实时更新,而不是仅仅进入初始化InitModel里边 染多个物体的时候,缓冲区的内容是要随设备变化的. 话不多说直接上代码 主程序main #include "D3DBase.h" #include "Axis.h" #include "Cube.h" class D3

OpenStack开发学习笔记03————创建一个openstack

当fuel for openstack安装部署完成后,就可以去创建openstack了 首先,打开https://10.20.0.2:8443/      输入默认的  用户名和密码    admin  admin   来进行登陆 登陆 创建openstack 这时上边报错了,,很尴尬......... WARNING: Failed to build the bootstrap image, see /var/log/fuel-bootstrap-image-build.log for det

HTML学习笔记--实例-创建一个注册页面--select两个option出来结果却是四个选项,其中两个空白选项的原因?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

QT学习笔记(13) QT下的UDP通信

一.UDP通信 UDP通信没有明确的服务器端和客户端之分 TCP通信像是打电话(必须要接通才能通信),UDP通信像是写信(不管能不能收到都发送出去) 首先需要QUdpSOcket套接字,然后绑定bind()端口号和ip 如果对方发送过来数据,套接字自动触发readyRead()方法 套接字QUdpSOcket通过readDatagram()和writeDatagram()方法读取和写入数据 二.示例代码如下: QT_HelloWorld12.pro 1 #--------------------

【Qt学习笔记】1.初步接触

一.前言 Qt是一个跨平台的C++图形面向对象的框架,今天开始学习并记录学习过程,希望通过这段时间的努力学会Qt的使用. 同时我也希望在学习的过程中对C++的各种特性有能深刻的认识. 此外,我在Qt初步的学习过程中,所用的环境应该是 VS2015 IDE 二.安装 官网下载Qt安装包和 Qt for VS addin,分别安装,并配置. 三.Hello World 接下来用Qt框架来完成第一个程序 首先打开VS,创建一个Qt工程 熟悉的C++界面,但Qt是有可视化界面的,点击解决方案管理器中的.

【Qt学习笔记】13.拖放技术:Drag & Drop

1.接受拖放 Drag & Drop 是一个界面操作,用于在两个窗口间传递数据. Drag Source: 拖放源窗口 Drag Target: 拖放目标窗口 拖放操作: 1.在源窗口:选中目标,按下鼠标,移动,拖至目标窗口(Drag) 2.在目标窗口:取消鼠标,到指定位置,松开鼠标(Drop) (按下ESC取消操作) MIME: MIME(Multipurpose Internet Mail Extensions)被传递的数据以MIME格式传送,它是多组type-data数据:(type0,

Qt学习笔记-Widget布局管理

Qt学习笔记4-Widget布局管理 以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,finddialog.h,finddialog.cpp及main.cpp. //finddialog.h代码 #ifndef FINDDIALOG_H#define FINDDIALOG_H #include <QDialog> class QCheckBox;class QLabel;class QLineE