三亚凤凰镇网站建设兼职招聘网,还有河北城乡和住房建设厅网站吗,wordpress 404 跳转,电大考试亿唐网不做网站做品牌文章目录零.Qt背景1.什么是Qt2.Qt的发展史3.Qt的优势4.Qt应用一.第一个Qt程序0.项目创建1.main函数文件2.类头文件3.pro文件4.qt命名规范二.Qt按钮1.按钮创建和父子关系2.按钮常用api3.Qt窗口坐标体系4.对象树模型零.Qt背景
1.什么是Qt Qt是一个跨平台的C图形用户界面应用程序…
文章目录零.Qt背景1.什么是Qt2.Qt的发展史3.Qt的优势4.Qt应用一.第一个Qt程序0.项目创建1.main函数文件2.类头文件3.pro文件4.qt命名规范二.Qt按钮1.按钮创建和父子关系2.按钮常用api3.Qt窗口坐标体系4.对象树模型零.Qt背景
1.什么是Qt Qt是一个跨平台的C图形用户界面应用程序框架 它为应用程序开发者提供建立图形界面所需的所有功能 它是完全面向对象的很容易扩展并且允许真正的组件编程
2.Qt的发展史 1991年 Qt最早由芬兰奇趣科技开发 1996年 进入商业领域它也是目前流行的Linux桌面环境KDE的基础 2008年 奇趣科技被诺基亚公司收购Qt称为诺基亚旗下的编程基础 2012年 Qt又被Digia公司芬兰一家软件公司收购 2014年4月 跨平台的集成开发环境Qt Creator3.1.0发布同年5月20日配发了Qt5.3正式版至此Qt实现了对iOS、Android、WP等各平台的全面支持
3.Qt的优势 跨平台几乎支持所有的平台 接口简单容易上手学习QT框架对学习其他框架有参考意义 一定程度上简化了内存回收机制 开发效率高能够快速的构建应用程序 有很好的社区氛围市场份额在缓慢上升 可以进行嵌入式开发
4.Qt应用 Linux桌面环境KDEK Desktop Environment WPS Office 办公软件 Google Earth 谷歌地球 …
一.第一个Qt程序
0.项目创建 Qt的项目分为三个基类:QMainWindow,QWidget,QDialog 三个基类之间的关系: 注:对于初学者创建Qwidget的项目就可以了 1.main函数文件 解释: Qt系统提供的类头文件没有.h后缀 Qt一个类对应一个头文件类名和头文件名一致 QApplication表示应用程序类
对于QApplication: QApplication管理图形用户界面应用程序的控制流和主要设置 nQApplication类对象是Qt生命一个程序要确保一直运行就肯定至少得有一个循环这就是Qt主消息循环在其中完成来自窗口系统和其它资源的所有事件消息处理和调度。它也处理应用程序的初始化和结束并且提供对话管理 对于任何一个使用Qt的图形用户界面应用程序都正好存在一个QApplication 对象不论这个应用程序在同一时刻有多少个窗口
a.exec(): 程序进入消息循环等待对用户输入进行响应 这里main()把控制权转交给QtQt完成事件处理工作当应用程序退出的时候exec()的值就会返回 在exec()中Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件
执行a.exec()即类似于如下代码: 2.类头文件
class HelloWidget : public QWidget
{//引入qt信号和槽的一个宏Q_OBJECTpublic://parent窗口指针,父窗口对象的指针//如果parent为0或者nullptr,表示当前窗口对象是一个顶层窗口//顶层窗口即为在任务栏可以找到的窗口HelloWidget(QWidget *parent nullptr);~HelloWidget();private:};3.pro文件
#引入Qt的模块core gui
QT core gui
#如果qt版本大于4那么引入widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT widgets
# 表示使用过时的api 则会报错
DEFINES QT_DEPRECATED_WARNINGS
#要编译的源文件列表
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.pro文件的规则 注释:从“#”开始到这一行结束 模块引入:QT 模块名表示当前项目引入Qt哪些模块 工程中包含的头文件:HEADERS include/painter.h 工程中包含的源文件:SOURCES sources/main.cpp sources 工程中包含的资源文件:RESOURCES qrc/painter.qrc greaterThan(QT_MAJOR_VERSION, 4): QT widgets:如果QT_MAJOR_VERSION大于4也就是当前使用的Qt5及更高版本需要增加widgets模块 配置信息:CONFIG用来告诉qmake关于应用程序的配置信息,CONFIG c11 //使用c11的特性qt5.6以上版本默认使用C11
4.qt命名规范 类名单词首字母大写单词和单词之间直接连接无需连接字符 MyClass,QPushButton
class MainWindowQt中内置的类型头文件和类命名同名 #include QString
QSring str;
#include QWidget
QWidget w;函数名字变量名首字母小写之后每个单词首字母大写单词和单词之间直接连接无需连接字符 void connectTheSignal();类的成员变量设置函数用使用 set成员变量名获取成员变量的函数直接用成员变量名如果是bool类型有可能会用一些表示状态的术语如isVisilblehasFocus //普通成员变量设置和获取
void setText(QString text);
QString text()const;
//bool的成员变量设置和获取
void setEnabled(bool enabled);
bool isEnabled()const;二.Qt按钮
1.按钮创建和父子关系 在Qt程序中最常用的控件之一就是按钮 #include QPushButtonQPushButton * btn new QPushButton; //设置父亲
btn-setParent(this);
//设置文字
btn-setText(按钮1);
//移动位置
btn-move(100,100);
//第二种创建
QPushButton * btn2 new QPushButton(按钮2,this);
//重新指定窗口大小
this-resize(600,400);
//设置窗口标题
this-setWindowTitle(第一个项目);
//限制窗口大小
this-setFixedSize(600,400);说明: 一个按钮其实就是一个QPushButton类的对象如果只是创建出对象是无法显示到窗口中的就需要依赖一个父窗口也就是指定一个父亲而调用按钮的show()函数只能让按钮独立显示 利用setParent函数或者按钮创建的时候通过构造函数传参此时我们称两个窗口建立了父子关系 在有父窗口的情况下窗口调用show会显示在父窗口中如果没有父窗口那么窗口调用show显示的会是一个顶层的窗口 2.按钮常用api 设置按钮上显示的文字可以用setText() 移动按钮位置用move() 修改左上角窗口的标题setWindowTitle() 重新指定窗口大小resize() 设置固定的窗口大小setFixedSize() 同时设置窗只位置和大小setGeometry()(相当于move和resize的结合体)
示例: 3.Qt窗口坐标体系
通过以上代码可以看出Qt的坐标体系 以左上角为原点0,0以向右的方向为x轴的正方向以向下方向为y轴的正方向 对于嵌套窗口其坐标是相对于父窗口来说的 顶层窗口的父窗口就是屏幕 4.对象树模型
QObject是Qt里边绝大部分类的根类 QObject对象之间是以对象树的形式组织起来的 当两个QObject或子类的对象建立了父子关系的时候。子对象就会加入到父对象的一个成员变量叫children孩子的list列表中 当父对象析构的时候这个列表中的所有对象也会被析构 QWidget是能够在屏幕上显示的一切组件的父类
QWidget继承自QObject因此也继承了这种对象树关系。一个孩子自动地成为父组件的一个子组件。我们向某个窗口中添加了一个按钮或者其他控件建立父子关系当用户关闭这个窗口的时候该窗口就会被析构之前添加到他上边的按钮和其他控件也会被一同析构
Qt 引入对象树的概念在一定程度上解决了内存问题
在 Qt 中尽量在构造的时候就指定 parent 对象并且大胆在堆上创建
84AA8k-1678505328521)]
QWidget是能够在屏幕上显示的一切组件的父类
QWidget继承自QObject因此也继承了这种对象树关系。一个孩子自动地成为父组件的一个子组件。我们向某个窗口中添加了一个按钮或者其他控件建立父子关系当用户关闭这个窗口的时候该窗口就会被析构之前添加到他上边的按钮和其他控件也会被一同析构
Qt 引入对象树的概念在一定程度上解决了内存问题
在 Qt 中尽量在构造的时候就指定 parent 对象并且大胆在堆上创建