Qt基础学习

1 Qt基础学习

快捷键

1.Alt+Enter // 自动类定义的实现
2.Alt+Tab // 按照编辑顺序切换文件
3.F1 // 查看帮助,文档
4.F2 // 快速到变量声明
5.F4 // 在 cpp 和 h 文件切换
6.Ctrl + F // 当前文档查找
7.Ctrl + Shift + F // 全部查找
8.Ctrl + M // 创建书签, Ctrl + . 切换书签 Alt + M打开书签栏
9.Ctrl + Enter // 在当前行的下方插入空白行
10.Ctrl + ], Ctrl + [ // 跳到程序段结尾或者开头
11.Ctrl + I // 自动缩进当前行,格式化代码
12.Ctrl + D // 删除当前行
13.Ctrl + R // 运行程序
14.Ctrl + B // 项目
15.Ctrl + / // 注释当前行或者选中的区域
16.alt+左右方向键 // 按照编辑顺序切换编辑区
17.Ctrl + shift+上、下方向键 // 移动当前行到上方或下方
18.Ctrl + E + 2 // 横向分屏
19.Ctrl + E + 3 // 纵向分屏
20.Ctrl + E + 4 // 全屏
21.Ctrl + E + 1 // 取消多屏
22.Ctrl + Home // 文件头
23.Ctrl + End // 文件尾
24.Shift + Home / Shift + End // 复制
25.调试 F10:单步跳过 F11:进入 Shift+F11:单步跳出 F5:
26.左侧边栏快捷键ctrl+1~7

1.1 开发基础体系

1.Windows环境 Qt 下载路径:https://download.qt.io/archive/qt/5.12/ ,选择qt-opensouce-windows-x86-5.12.8.exe
2.Linux环境下载路径:https://download.qt.io/,选择archive/–>qt/–>5.12/–>5.12.10/–>
qt-opensouce-windows-x86-5.12.10.exe Qt Windows 安装包
qt-opensouce-windows-x86-5.12.10.dmg Qt Mac安装包
qt-oensource-linux-x64-5.12.10.run Qt Linux安装包

1.2 自定义信号和槽

1.2.1 自定义信号

1.写到signals下;
2.返回void;
3.需要声明,不需要实现
4.可以有参数,可以重载;

1.2.2 自定义槽函数

1.返回void
2.需要声明,也需要实现;
3.可以有参数,可以重载;
4.写到public slot下,或者public 或者全局函数;

1.2.3 触发自定义的信号

1.emit 触发自定义信号

1.2.4 自定义信号和槽的重载

1.需要利用函数指针,明确指向函数的地址;
void (Teacher::tSignal)(QString)=&Teacher::hungry;
void (Student::sSlot)(QString) =&Student::treat;
//connect(zt,&Teacher::hungry,st,&Student::treat );
connect(zt,tSignal,st,sSlot);
2.QString 转称 char

.toUtf8()转为QByteArray
.Data()转为Char

void Student::treat(QString foodName)
{ qDebug()<<“请老师吃饭,”<<foodName.toUtf8().data(); } //否则会多个双引号

1.2.5 拓展

1.信号是可以连接信号;
2.一个信号可以连接多个槽函数;
3.多个信号可以连接同一个槽函数;
4.信号和槽函数的参数必须类型一一对应;
5.信号和槽的参数个数可以不一致 信号的参数个数可以多余槽函数的参数个数;
6.信号槽可以断开连接 disconnect;
7.Qt4版本的信号和槽连接方式:
connect(zt,SIGNAL(hungry()),st,SLOT(treat()));
优点:参数直观;
缺点:类型不做检查,信号和槽的参数个数可能不匹配;
Qt5版本支持Qt4的版本写法,反之不支持;

1.2 常用开发控件

1.2.1 QDockWidget

1.QDockWidget控件只能停靠在MainWindow里,不能停靠在Widget里;

1.2.2 QStackedWidget

1.相当于一个窗口一样,提供一个空间专门存放一些控件,并且每次只能有一个控件可见。

1.3 布局/对话框

6.控件详解

7.6 lambda表达式

eg: ={ btn->setText(“aaaa”); }(); //最常用方式
1.[]标识符 匿名函数;
2.= 值传递, & 引用传递, () 参数,{}实现体;
3.mutable 修饰值传递变量,可以修改拷贝初的数据,改变不了本体;
mmutable{ m=100+10; }();
4.返回值 ->int{}

8 QMainWindow

8.1 菜单栏

1.菜单栏最多有一个
2.QmenuBar *br=MenuBar();
SetMenuBar(bar);
QMeun *fileMenu=bar->addMenu(“文件”);//创建菜单
QAction *newAction=fileMenu->addAction(“新建”);
添加分割线 fileMenu->addSeparator();

8.2.工具栏

1.可以有多个
addToolBar(默认停靠区域,toolBar); //默认停靠区域:Qt::LeftTooBarArea

8.3.状态栏

1.只能有一个
QstatusBar *stBar=statusBar();
SetStatusBar(stBar);
stBar->addWidget(label);放左侧信息

8.4.铆接部件(浮动窗口)

1.铆接部件(浮动窗口) 可以有多个
QDockWidget
addDockWidget(默认停靠区域,浮动窗口指针)

8.4.设置中心不见

1.只能一个
setCentralWidget(edit);

9 资源文件

9.1 步骤

1.将图片文件拷贝到项目位置下;
2.右键项目->添加新文件->Qt->Qt resource File->给资源文件起名
3. res 生成 res.qrc
4. open in editor 编辑资源
5. 添加前缀 添加文件
6. 使用“:+前缀名+文件名”

10 对话框

10.1 分类

10.1.1 模态对话框

1.不可以对其他窗口进行操作,阻塞
QDialog dlg(this);
dlg.exec();

10.1.2非模态对话框

1.非模态对话框 可以对其他窗口进行操作;
2.防止一闪而过 ,创建到堆区;
QDialog *dlg=new QDialog(this);
dlg->show();
dlg->setAttribute(Qt::WA_DeleteOnClose); //窗体关闭时释放资源

10.2 标准对话框-消息对话框

10.2.1 QMeesageBox

1.静态成员函数 创建对话框
2.返回值 也是StandardButton类型,利用返回值判断用户的输入;

10.3 其他对话框

10.3.1 颜色对话框

1.QColorDialog::getColor

10.3.2 文件对话框

1.QFileDialog::getOpenFileName(父亲,标题,默认路径,过滤文件);

10.3.3 字体对话框

1.QFontDialog::getFont;

9 布局管理

7.1 系统提供的布局控件

7.2 利用widget布局

8 常用控件

8.1 QLabel控件使用

8.2 QLineEdit

8.3 其他控件

8.4 自定义控件

8.4.1 设置鼠标自动跟踪

setMouseTracking(true);
eg:
MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{
setMouseTracking(true);
}

9 Qt消息机制和事件

9.1 事件

9.1.1 鼠标移动事件

仅鼠标左键时才生效的写法
if(ev->buttons() & Qt::LeftButton)
其他左键判断: if(ev->button()==Qt::LeftButton)

void MyLabel::mouseMoveEvent(QMouseEvent *ev)
{
if(ev->buttons() & Qt::LeftButton)
{
qDebug()<<“鼠标移动了”;
}
}

9.1.2 获取事件参数方法

void MyLabel::mousePressEvent(QMouseEvent *ev)
{
if(ev->button()==Qt::LeftButton)
{
QString str=QString(“鼠标按下了 x=%1 y=%2 xglobal=%3 yglobal=%4”).arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
qDebug()<<str;
}

}

9.2 event事件

1 用途:用于事件的分类;
2 也可以拦截操作,不建议;
3 bool event(QEvent *e)
4.返回值 如果是true,代表用户处理这个事件,不向下分发了;
5. e->type()==鼠标按下

9.3 事件过滤器

1.在程序将事件分发到事件分发器钱,可以利用过滤器拦截
2 步骤
a 给控件安装事件过滤器;
b 重写eventFilter(obj,ev)函数

10 绘图和绘图设备

10.1 QPainter

1.重写绘图事件 void paintEvent(QPaintEvent *ev);
2.声明一个画家对象 QPainter painter(this); this指定绘图设备;
3.画线、画图、画矩形、画文字
painter.drawLine(QPoint(0,0),QPoint(100,100));
painter.drawEllipse(QPoint(100,100),100,50);
painter.drawRect(50,50,20,20);
painter.drawText(QRect(0,200,100,50),“好好学习,天天向上”);
4.设置画笔QPen
QPen pen(QColor(0,255,0));
pen.setWidth(3);
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
5.设置画刷 QBrush ,设置画刷风格
QBrush brush(Qt::cyan);
brush.setStyle(Qt::Dense3Pattern);
painter.setBrush(brush);

10.2 QPainter高级设置

1.抗锯齿 效率低
painter.setRenderHint(QPainter::Antialiasing);
2.对画家进行移动
painter.translate(100,0);
3.保存状态
painter.save();
4.还原状态
painter.restore();
5.如果想手动调用绘图事件,利用update
6.利用画家画图片 painter.drawPixmap(x,y,QPixmap(“:/image/xx.png”));

10.3 QPainterDevice绘图设备

  1. QPixmap 、QImage、 QBitmap(黑白色)、QPainter painter(& pix)
  2. QPixmap 对不同平台做了显示的优化
    a.QPixmap pix(300,300);
    b.pix.fill(Qt::Red);
    c.利用画家 往pix上画画 QPainter painter(& pix);
    d.保存 pix.save(“路径”);
  3. QImage 可以对像素进行访问
    a. 使用和QPixmap差不多 QImage img(300,300,QImage::Format_RGB32);
    b.其他流程和QPixmap一样
    c.可以对像素进行修改 img.setPixel(i,j,value);
  4. QPicture 记录和重现绘图指令
    a. QPicture pic;
    b.painter.begin(&plc);
    c.保存 pic.save(“任意后缀名”);
    d.重现 利用画家可以重现 painter.drawPicture(0,0,pic);

11 文件系统

11.1 基本文件操作

11.2 二进制文件读写

11.3 文本文件读写

2 Qt quick基础编程

2.1 ##
1.QML是Qt Quick核心组件(Qt4.7中的新特性)。
2.Qt Quick Application-Empty
Qt Quick Application-Scoll—使用ScrollView类型实现一个可滚动列表视图,需Qt5.9及以上版本
Qt Quick Application-Stack–基于堆的导航模型页面,需Qt5.7及以上
Qt Quick Application-Swipe --基于滑动导航页面,需Qt5.7及以上

3 OpenCV

1.用途:主要倾向于实时视觉应用领域。
2.应用领域:人机互动、物体识别、图像分割、人脸识别、运动跟踪、机器视觉等领域。
3.官网下载地址:https://opencv.org/releases/
4.系统环境变量配置:用户变量中,Path项新增:D:\develop\OpenCV4.9.0\opencv\build\x64\vc16\bin
5.vs新建项目,设置项目属性->配置属性->vc++目录:
包含目录增加:D:\develop\OpenCV4.9.0\opencv\build\include
库目录增加:D:\develop\OpenCV4.9.0\opencv\build\x64\vc16\lib
链接器->输入->附加依耐项添加lib库:opencv_world490d.lib(debug模式下)或者opencv_world490.lib(release模式下),lib 库路径:D:\develop\OpenCV4.9.0\opencv\build\x64\vc16\lib

4 QSS样式

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值