自定义控件的封装、常用的鼠标事件的重载、定时器的使用、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.1 安装事件过滤器

5.2 重写eventfilter

原文地址:https://www.cnblogs.com/yangjiaoshou/p/13153654.html