第一个QT程序

new->Application->Qt Widgets Application

创建一个Qt窗口应用.

创建类的时候,会先创建一个顶层窗口,有一个下拉框.

  • QWidget: QWidget类是所有用户界面对象的基类.QMainWindow和QDialog都是QWidget的子类。
  • QMainWindow : QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。
  • QDialog: QDialog类是对话框窗口的基类。

在这里我选择了QWidget,不使用ui.

#include "mywidget.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.show(); return a.exec();
}

应用程序类QApplication

在新创建的文件main.cpp中,main()创建了对象QApplication.

QApplication:应用程序类,在每个QT程序中,有且只有一个.

窗口拖拽实现:

当你用鼠标拖拽窗口顶部时,窗口接收到了事件的发生.

捕捉到事件后,应用程序类做一些默认的处理.

最终通过应用程序类QApplication完成.

窗口类MyWidget

w.show(): 显示窗口

窗口类创建出来默认是不显示的.

进入事件循环 a.exec()

  • a.exec()

    走到了后台,进行消息循环.
  • return a.exec();

    相当于把程序运行交给Qt处理,进入程序的循环状态。
  • return 0;

    程序就直接退出了,不能达到显示的效果.

头文件

#include "mywidget.h"
#include <QApplication>

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H #include <QWidget> class MyWidget : public QWidget
{
Q_OBJECT //如果使用信号槽,必须添加这个宏. public:
MyWidget(QWidget *parent = 0);
~MyWidget();
}; #endif // MYWIDGET_H

在这段代码里面我们可以看到:

  1. 包含头文件<QWidget>
  2. 自定义MyWidget继承基类QWidget

    3.宏Q_OBJECT

QApplication

文件Demo_pro

对整个项目进行管理.

//当前项目用到的一些模块
QT += core gui //兼容以前的版本
//Qt4没有widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //生成的应用程序的名字
TARGET = Demo //指定生成的makefile类型
TEMPLATE = app DEFINES += QT_DEPRECATED_WARNINGS CONFIG += c++11 //源文件
SOURCES += \
main.cpp \
mywidget.cpp //头文件
HEADERS += \
mywidget.h qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

我怎么知道我用到的窗口属于哪个类?

例如,我这个项目只用到了MyWidget类.

右键类名MyWidget,Follow Symbol Under Cursor,看到继承的基类是QWidget.

按F1,获得页面

QWidget Class
Header:
#include <QWidget>
qmake:
QT += widgets

1.第一个QT程序的更多相关文章

  1. Ubuntu10.04下安装Qt4和创建第一个Qt程序

    1.首先安装Qt4并采用Qt Creator进行开发演示 (1)在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfi ...

  2. Qt入门-第一个Qt程序

    在安装完之后,迫不及待创建第一个Qt  demo

  3. 编写第一个Qt程序

    http://c.biancheng.net/view/1817.html 学习一种编程语言或编程环境,通常会先编写一个“Hello World”程序.我们也用 Qt Creator 编写一个“Hel ...

  4. 我的Qt历程1:第一个Qt程序

    1.启动Qt,按照红圈内所标注顺序执行操作. 2.按下Choose键后,在“名称”栏目里给程序起名字(不要是汉字名字). 3.在“创建路径”栏目里指定程序将要使用的路径(不能用汉字路径). 4.在“类 ...

  5. 【Qt开发】01-第一个Qt程序Hello World!

    一:说在前头 我的第一份工作是做生产工具,当时用的MFC,IDE是VC6.0,现在想想真是古董级别,10年至今,微软也一直没有对MFC进行升级, 冥冥中感觉微软自己都放弃MFC了,市场上貌似MFC的岗 ...

  6. QT(3)第一个QT程序

    一.创建一个空项目 二.配置 在demo.pro文件中添加配置: greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 添加main.cpp文件 三.编写代码 ...

  7. 【Qt开发】第一个Qt程序Hello World!

    一:说在前头 我的第一份工作是做生产工具,当时用的MFC,IDE是VC6.0,现在想想真是古董级别,10年至今,微软也一直没有对MFC进行升级,冥冥中感觉微软自己都放弃MFC了,市场上貌似MFC的岗位 ...

  8. 【QT】第一个QT程序(点击按钮,显示特定文本)

    1.基类选 QWidget 2.添加UI Btnshowhello 按钮 labelhello 文本标签 要注意:文本字样和对象名的区别! 对象名和UI部件是一一对应的关系. 修改对象名和修改文本字样 ...

  9. Qt ------ window下工程项目打包成一个exe程序

    最近,在学习QT5的过程中,想尝试着把自己写的工程程序给打包发布出来,在任何一台windows系统都能运行,这样就不会限于电脑需不需要安装QT安装包了. 首先,先介绍自己使用的环境.我使用的QT版本是 ...

随机推荐

  1. docker 部署 mongodb 并且开启远程连接

    mongodb 使用 docker 部署 mongodb 拉取镜像 docker pull mongo 可以查看镜像是否下载成功 docker images | grep mongo 应该会有如下的显 ...

  2. springmvc<二> 一些配置

    1.1.3. Web MVC Config    1.1.2中的解析器可以自定义实现,DispatcherServlet检查每个特殊bean的WebApplicationContext,如果没有匹配的 ...

  3. 手写koa-static源码,深入理解静态服务器原理

    这篇文章继续前面的Koa源码系列,这个系列已经有两篇文章了: 第一篇讲解了Koa的核心架构和源码:手写Koa.js源码 第二篇讲解了@koa/router的架构和源码:手写@koa/router源码 ...

  4. 深海 => 暴力扫描挖掘机

    平时总是联动这个联动那个,写一些小脚本,感觉零碎又没啥意思,想把市面上一些比较知名的工具集合一下,弄个方便点的躺着挖洞的工具,看看效果会不会更好,暂时名字取深海吧,估计又是一个迟迟不填的坑,灌灌灌灌水

  5. 前端性能测试(H5性能测试)

    前端性能调优方法同样适用于H5. 1.H5前端性能知识点 学习前端性能,必须对HTTP协议有所了解. 1.1 浏览器渲染引擎 浏览器是Html解析和页面最终展示的工具. 浏览器的主要功能:将用户选择的 ...

  6. 直接插入排序(python实现)

    这篇博文用来介绍直接插入排序 直接插入排序基本思想: 每次将一个待排序的记录插入到已经排好序的数据区中,直到全部插入完为止 直接插入排序算法思路: 在直接插入排序中,数据元素分为了有序区和无序区两个部 ...

  7. 算法——1~n 整数中 1 出现的次数

    输入一个整数 n ,求1-n这n个整数的十进制表示中1出现的次数. 例如,输入12,1-12这些整数中包含1 的数字有1.10.11和12,1一共出现了5次. leetcode 解题思路:依次遍历每一 ...

  8. Java并发编程的艺术(六)——中断、安全停止线程

    什么是中断 Java的一种机制,用于一个线程去暂停另一个线程的运行.就是一个正在运行的线程被其他线程给打断,停止运行挂起了. 我觉得,在Java中,这种中断机制只是一种方便程序员编写进程间的通信罢了. ...

  9. 11g RAC开启归档模式

    1.关闭集群数据库 [oracle@rac01-+ASM1 ~]$ srvctl stop database -d rac 2.开启节点一数据库到mount状态 SQL> startup mou ...

  10. 微信小程序api拦截器

    微信小程序api拦截器 完美兼容原生小程序项目 完美兼用小程序api的原本调用方式,无痛迁移 小程序api全Promise化 和axios一样的请求方式 小程序api自定义拦截调用参数和返回结果 强大 ...