Qt_day01
1.1 Qt简介:
Qt是一个跨平台的C++图形用户界面应用程序框架开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序
Qt作为前端图形界面的表现;C++作为后端代码编程的表现
Qt的发展史
1991年 Qt最早由奇趣科技开发
1996年 进入商业领域,它也是目前流行的Linux桌面环境KDE的基础
(Linux两种主流图形命令界面KDE、GNOME)
2008年 奇趣科技被诺基亚公司收购,Qt称为诺基亚旗下的编程语言
2012年 Qt又被Digia公司收购
2014年4月 跨平台的集成开发环境Qt Creator3.1.0发布,同年5月20日配发了Qt5.3正式版,至此Qt实现了对iOS、Android、WP等各平台的全面支持。
当前Qt最新版本为 5.5.0
1.2 Qt框架
创建一个Qt项目:
打开Qt Creator界面——选择 New Project——选择Qt Widgets Application——添加一个继承自CMainWindow的类
QMainWindow 主窗口
QWidget 小部件 (一般都用这个Qwidget 这是一个基类 其他的都由这个衍生)
QDialog 对话框
1.3 项目文件
.pro —— 项目工程文件(应用程序文件)
qmake自动生成的用于生产makefile的配置文件
QT += core gui //模块的名字 core gui (核心界面编程) 程序 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //限定说明程序主版本大于版本4 TARGET = 01_QtTest //应用程序名/项目名 TEMPLATE = app //生成的makefile的模板类型 DEFINES += QT_DEPRECATED_WARNINGS //定义编译选项,标记警告项 CONFIG += c++11 //配置支持C++的版本11 //sources 源文件配置参数 SOURCES += \ main.cpp \ mywidget.cpp //headers 头文件配置参数 HEADERS += \ mywidget.h //forms 窗口设计文件 FORMS += mywidget.ui qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target
/***
* 1、程序核心编程gui QT += core gui
* 2、现行声明程序主版本大于版本4 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
* 3、项目名 模板类型
* 4、定义编译选项,标记警告项
* 5、配置支持C++版本11
* 6、源文件、头文件、ui文件配置
*/
Headers /
mywidget.h
#ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> class MyWidget : public QWidget //MyWidget类公有继承于QWidget类 { Q_OBJECT //信号与槽相关 public: MyWidget(QWidget *parent = 0); //构造函数 ~MyWidget(); //析构函数 }; #endif // MYWIDGET_H
sources /
main.cpp
#include "mywidget.h" //头文件和类名一样 #include <QApplication> //应用程序类 //Qt头文件没有.h 前两个字母大写 int main(int argc, char *argv[]) { QApplication a(argc, argv); //1-定义应用程序对象a //定义一个应用程序对象a (有且只有一个) MyWidget w; //2-定义一个窗口对象w //MyWidget继承于QWidget类,QWidget是一个窗口基类 //所以MyWidget也是一个窗口类 //w就是一个窗口对象,这里的就是部件窗口 w.show(); //3-手动显示窗口 //窗口常见是需要认为显示的,使用show函数实现 return a.exec(); //让程序一直执行,等待用户操作 //等待事件发生,没有这一句程序会导致应用程序对象a运行一闪而过 //return a.exec(); 相当于 /** a.exec(); //让程序持续不停止运行 return 0; //当触发操作停止时返回值给对应部件 */ }
mywidget.cpp
#include "mywidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { } MyWidget::~MyWidget() { }
Qt 功能模块:
1.4 第一个Qt程序
.pro QT += widgets SOURCES += \ main.cpp main.cpp #include <QApplication> #include <QWidget> int main(int argc, char **argv) { QApplication APP(argc,argv); QWidget w; w.setWindowTitle("hello world!"); //设定标题 setWindowTitle(); w.show(); return APP.exec(); }
1.5 父窗口和子窗口的区别(控件、部件、构件)
控件:(窗口标题) setWindowTitle();
<QPushButton> 控件:(按钮) QPushButton b; (控件显示)b.setText();
创建控件默认是隐藏的,需要使用show();人为显示出来
如果不指定父对象,窗口和窗口之间没有关系,相互独立!(不是我们想要的)
a指定b为它的父对象,a放在b的上面
指定父对象,有2种方式: 1、b.setParent(&w) //setParent函数,&w是父对象地址,是子对象
2、QPushButton b1(&w) //通过构造函数传参
指定父对象,只需要父对象显示,上面的子对象自动显示
一般大的窗口为父对象,小的控件叫子对象
1.6 信号和槽
信号和槽就是让控件和对应的活动关联起来;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)