概念
Qt create
Qt create 是一个轻量级的集成开发环境,
vs下的Qt设置utf-8显示
#pragma once
#pragma execution_character_set("utf-8")
Qt
Qt是真正指的是Qt库
GUI
G 图形 U应用 I接口
qmake
SOURCES 表示源文件
HEADERS 表示头文件
INCLUDEPATH 头文件路径
LIBS += -L 库
LIBS += -l 路径
CONFIG += c++11 console 程序配置
TARGET = xxx.exe 目标文件
TEMPLATE = app 模板
lib 模板
dll 模板
vcapp 建立一个应用程序的visual studio文件
vclib 建立一个库的visual studio文件
FORMS 添加ui文件
DEFINES 定义宏
所有继承自QOject 的对象,都可以通过QOject自动释放对象,但是没有继承的对象需要手动释放,否则会造成内存泄漏
内存管理
deleteLater() 在消息处理完成之后释放该对象
Qt 基础
基础
#include <QApplication>
一个QT 应用只能创建一个对象,是一个单例,用于消息的控制流以及应用的设置
#include <QWidget>
QWidget 在Qt 属于最基本的窗口类,所有的其他的窗口有它派生而来
QWidget 继承自QObject ,QObject 属于Qt中最基本的类
#include <QPushButton> 按钮类
控件透明
styleSheet("border:0px solid #76bbff;
background-color: rgba(255, 255, 255, 0%);
color:#A0A0A0")
常用API
杂项
resize 窗口大小
pos 窗口起始坐标
setParent 设置父窗口
move 移动到目标坐标
QObject::connect(发送对象,SIGNAL(信号槽),处理消息对象,SLOT(执行事件))
exec 消息循环,消息泵
setText 设置按钮标题
deleteLater 在对象消息处理完成之后释放该对象
width 对象宽度
height 对象高度
setMinimunWidth 设置最小宽度
setMaximunWidth 设置最大宽度
setMinimunHeight 设置最小高度
setMaximunHeight 设置最大高度
获取屏幕大小
不包括任务栏
int x = GetSystemMetrics(SM_CXFULLSCREEN);
int y = GetSystemMetrics(SM_CYFULLSCREEN);
包含任务栏
int x = GetSystemMetrics(SM_CXSCREEN);
int y = GetSystemMetrics(SM_CYSCREEN);
QApplication
qApp 与 QApplication::instance() 等价
qApp 有quit退出 函数
布局管理器
横向/竖向 布局管理器 QHBoxLayout
setLayout(QHBoxLayout()) 为窗口添加布局管理器
addStretch 增加伸缩量,弹簧
addWidget 添加对象到布局管理器,会把该对象的父窗口设置为Layout的父窗口
addSpacing 设置对象间隙
setMargin 设置边界间隙
size 窗口推荐大小
sizeHint 窗口实际大小,如果没有使用布局管理器,不可以使用该方法
表格布局管理器 QGridLayout
addWidget(object,row,col,横范围,列范围) 坐标以格子为步长
管理器可以互相嵌套
addLayout(object,row,col)
QTextEdit/ QLabel
QTextEdit
toPlainText() 获取编辑框的文本
QLineEdit
setText 设置文本
Text 获取文本
setEchoMode(QLineEdit::EchoMode::Password) 设置密码形式接收
设置LineEdit 只接受int类型的数据
0 起始值; 100 最大值;
QIntValidator*valid = new QIntValidator(0,100,this);
QLineEdit lineEdit;
lineEdit.setValidator(valid);
QLabel
setText 设置文本
信号与槽
多个信号可以跟同一个槽函数链接
一个信号可以跟多个槽函数链接
槽函数参数与信号参数不一致,但不推荐使用,会发生数据丢失等未知BUG
disconnect(object,SIGNAL(),object,SLOT()) 断开信号链接
槽函数
步骤:
1 继承QObject
2 加上Q_OBJECT 宏
3 public slots: 指明槽函数的声明区域
调用槽函数 emit func();
强转的目的是明确调用那个重载函数
connect(信号产生对象,static_cast<void(QPushButton::*)(int)>&QPushButton::clicked,()[]{});
connect(信号产生对象,SIGNAL(信号),调用者,SLOT(调用函数));
信号
步骤:
1 继承QObject
2 加上Q_OBJECT宏
3 signals 指明信号声明区域
4 信号只声明不定义,信号没有返回值,可以有参数
MainWindow
菜单栏
QMenuBar 菜单栏,一个窗口只有一个菜单栏
QMenuBar *menuBar = QWidget::menuBar()
QMenu 菜单
QMenu *menu = new QMenu("file(&f)",menuBar); f 表示快捷方式,父窗口,将其管理托管到QMenuBar里面
menuBar->addMenu(menu);在菜单添加并显示菜单
menu->addMenu(QIcon("资源"),"name");添加子菜单,添加图标
menuFile_->showFullScreen();// 全屏
menuFile_->showNormal();// 最小化
menuFile_->showTearOffMenu(QPoint(100,100));// 分离布局
Action 动作
menu->addAction("open file"); 在菜单里面添加动作
QIcon 图标
menu->addAction(QIcon("资源路径"),"动作名字",调用者,SLOT(槽函数),QKeySquence("快捷方式(ctrl+s)"));
menu->addActions(new QList<QAction*>(new QAction(""))); 根据链表增加多个子菜单,
menu->addSeparator() 增加修饰线条
menu->text() 获取子菜单名字
ACtion::setCheckable(true);设置动作状态
工具栏
this->addToolBar(Qt::RightToolBarArea,new QToolBar("tool",this));在窗口左边添加工具栏
QToolBar::addAction(QIcon("资源"),"名字");为工具栏添加图标,名字
状态栏
一个窗口只有一个状态栏
QStatusBar*stb = this->statusBar();
stb->showMessage("消息",时间); 显示状态,显示以毫秒为单位计算
stb->clearMessage(); 清除状态
设置中央窗口
QTextEdit *tEdit = new