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

  • 相关阅读:
    探索c#之Async、Await剖析
    探索C#之布隆过滤器(Bloom filter)
    探索C#之虚拟桶分片
    刷新本地的DNS缓存数据
    php取整函数ceil,floor,round,intval函数的区别
    这样顶级人生规划 ,想不成功都难
    全篇干货,10分钟带你读透《参与感》
    iOS审核秘籍】提审资源检查大法
    php如何遍历多维的stdClass Object 对象,php的转换成数组的函数只能转换外面一丛数组
    RDS MySQL 连接数满情况的处理
  • 原文地址:https://www.cnblogs.com/yangjiaoshou/p/13153654.html
Copyright © 2020-2023  润新知