Qt学习

这篇博客详细介绍了Qt的基础知识,包括Qt Create、GUI、qmake和内存管理等概念。深入讲解了QApplication、布局管理器、信号与槽、主窗口、对话框、颜色对话框、消息框和数据结构等核心功能。还涵盖了多线程和定时器的使用,以及如何实现窗口隐藏和橡皮擦功能。
摘要由CSDN通过智能技术生成

概念

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值