自定义控件的封装、常用的鼠标事件的重载、定时器的使用、event事件以及事件过滤器、文件操作以及文本流和数据流的使用
1 自定义控件
1.1 smallWidget 添加文件:设计师界面类
1.2 提升为自定义控件的类名之后便可以使用
1.3 信号和槽
1.3.1 valueChanged
1.3.2 setValue
1.4 自定义空间中组件之间的值通过信号和槽进行交互:
//QSpinBox移动 Slider跟着移动 void(QSpinBox:: * signal)(int) = &QSpinBox::valueChanged; connect(ui->spinBox,signal,ui->horizontalSlider,&QSlider::setValue); //Slider移动 SpinBox跟着移动 connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
1.5 自定义组件提供对外的接口来实现一些方法:
1.5.1自定义控件的.h文件中定义对外的方法接口:
void setValue(int v); int getValue();
1.5.2自定义控件的.cpp文件中接口方法的实现:
void SmallWidget::setValue(int v) { ui->spinBox->setValue(v); } int SmallWidget::getValue() { return ui->spinBox->value(); }
1.5.3在其他窗口中使用自定义控件的接口:
//点击设置 到一半的位置 connect(ui->btnSet,&QPushButton::clicked,[=](){
//widget为自定义控件提升之后的名称 ui->widget->setValue(50); }); //点击获取,拿到当前值 connect(ui->btnGet,&QPushButton::clicked,[=](){ qDebug () << "当前值为:" << ui->widget->getValue(); });
2 事件
2.1 鼠标进入 (参数要加入)
2.2 鼠标离开
2.3 鼠标按下
2.3.1 位置信息 ev->x() ev->y()
2.3.2 判断按键 ev->button() Qt::LeftButton
2.4 鼠标释放
2.5 鼠标移动
2.5.1 判断按键 ev->buttons() & Qt::LeftBtton
2.6鼠标事件的使用:
2.6.1自定义控件类,继承的类为Qwidget,之后去.h的头文件和.cpp的文件去修改继承的基类。
.h文件:
#include <QLabel> class MyLabel : public QLabel
.cpp文件
3 定时器
3.1 timerEvent
3.2 启动 startTimer
3.3 timerId
3.4 第二种 QTimer
3.5 启动 start
3.6 timeout 信号
3.7 stop 暂停
4 event
4.1 作用 事件的分发
4.2 返回值 bool
4.2.1 作用 true 用户自己处理 ,不向下分发
5 事件过滤器 上层拦截
5.1 安装事件过滤器
5.2 重写eventfilter
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)