第一个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. LeetCode[5] 最长的回文子串
  2. LeetCode-53-Maximum Subarray
  3. &lt;&lt;&lt; Oracle表空间创建、修改、删除基本操作
  4. 写在OpenFire
  5. iOS阶段学习第26天笔记(UILabel的介绍)
  6. August 29th 2016 Week 36th Monday
  7. 妙味5:document.cookie 操作
  8. 利用OpenCV检测图像中的长方形画布或纸张并提取图像内容
  9. json在线校验
  10. django中外键关联表的查询随笔
  11. Delphi的Owner与Parent可以不一致,而且Owner不是必须存在(一共7个问题) good
  12. android 用 XML 自定义边框(只上下边框有色)
  13. java值传递与引用传递实例
  14. 【转载】CSS3 文字溶解效果
  15. 错误 88 error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明) c:\program files (x86)\microsoft visual studio 9.0\vc\atlmfc\include\afxcoll.h 590
  16. C/S 开发框架 ----- 广州本地
  17. PID控制器开发笔记之十:步进式PID控制器的实现
  18. Django Web开发基础环境配置流程
  19. ThinkPHP框架 3.2.2 获取系统常量信息 连接数据库 命名空间的理解
  20. perl数组高级

热门文章

  1. Spring Cloud 学习 (八) Spring Boot Admin
  2. 20191225_关于sql中exists和not exists
  3. js实现视频截图,视频批量截图,canvas实现
  4. 2、pytorch——Linear模型(最基础版,理解框架,背诵记忆)(调用nn.Modules模块)
  5. 对网页接口的追踪探索(以b站通过bv号查询av号为例
  6. 搭建yum仓库服务器
  7. mac中nvm的安装和使用
  8. docker 使用ubuntu 系统
  9. windows上mysql5.7服务启动报错
  10. nc监控实现调用受害者cmd