zoukankan      html  css  js  c++  java
  • 为QLabel增加Clicked信号

    QT为QLabel添加Click事件(如果我们使用组件,我们关心的是信号槽;如果我们自定义组件,我们关心的是事件)

    其实就是改写了一个函数:mouseReleaseEvent,当在QLabel放开鼠标的时,就发射点击信号:

    ClickedLabel.h

    #ifndef CLICKEDLABEL_H
    #define CLICKEDLABEL_H
    
    #include <QLabel>
    #include <QWidget>
    #include <Qt>
    
    class ClickedLabel : public QLabel
    {
        Q_OBJECT
    public:
        explicit ClickedLabel(QWidget *parent = 0,Qt::WindowFlags f=Qt::WindowFlags());
        ~ClickedLabel();
    
    signals:
        void clicked();
    
    protected:
        void mouseReleaseEvent(QMouseEvent *ev);
    };
    
    #endif // CLICKEDLABEL_H

    ClickedLabel.cpp

    #include "clickedlabel.h"
    
    ClickedLabel::ClickedLabel(QWidget *parent,Qt::WindowFlags f):QLabel(parent)
    {
    
    }
    
    ClickedLabel::~ClickedLabel()
    {
    
    }
    
    void ClickedLabel::mouseReleaseEvent(QMouseEvent *ev)
    {
    
        emit clicked();
    }

    总的来说,如果我们使用组件,我们关心的是信号槽;如果我们自定义组件,我们关心的是事件。因为我们可以通过事件来改变组件的默认操作。比如,如果我们要自定义一个能够响应鼠标事件的EventLabel,我们就需要重写QLabel的鼠标事件,做出我们希望的操作,有可能还得在恰当的时候发出一个类似按钮的clicked()信号(如果我们希望让这个EventLabel能够被其它组件使用)或者其它的信号。

    然后在UI界面中右键菜单中选择“提升到”,在对话框中输入对应的派生类名称和头文件。之后单击“添加”按钮

    然后选中提升后的label,在右键菜单中选择改变信号/槽,在信号中增加 clicked()
     
    Image1.png
     
     
    然后在转到槽中选择clicked信号即可。
  • 相关阅读:
    rails best particseceeeeeeeeeeee
    clear out all firefox plugin
    named scope on rail3
    javascript保留两位小数
    rails
    CVSNT权限配置
    rails session使用好文章
    rails session security
    javascript断点调试方法
    rails3发邮件
  • 原文地址:https://www.cnblogs.com/sggggr/p/12017783.html
Copyright © 2011-2022 走看看