Qt make clickable label 制作可点击的Label控件

Qt中的Label标签控件的作用绝不仅仅限于显示静态文本,其实它的功能很强大,由于其有setPixmap()成员函数,故而可以当显示图片窗口使用,而且还可以实时显示摄像头捕获的图片,然后它对鼠标事件的支持却没有QWidget那样强大,很多时候我们想要QLabel捕获鼠标单击或双击的事件,它本身无法实现,我们只好写一个新的class来实现我们需要的功能,这也是C++的强大之处所在,继承特性可以让我们在原有的基础上无限增加新的特性。那么这里我们想要QLabel捕获鼠标的双击事件,我们需要新建一个类名为QtClickableLabel,继承于QLabel:

qtclickablelabel.h

#ifndef QTCLICKABLELABEL_H
#define QTCLICKABLELABEL_H

#include <QLabel>

class QtClickableLabel : public QLabel
{
    Q_OBJECT

public:
    explicit QtClickableLabel(QWidget *parent = 0);
    explicit QtClickableLabel(const QString &text = "", QWidget *parent = 0);
    ~QtClickableLabel();

signals:
    void clicked();

protected:
    void mouseDoubleClickEvent(QMouseEvent *event);
};

#endif // QTCLICKABLELABEL_H

qtclickablelabel.cpp

#include "qtclickablelabel.h"

QtClickableLabel::QtClickableLabel(const QString &text, QWidget *parent)
    : QLabel(parent)
{
    this->setText(text);
}

QtClickableLabel::QtClickableLabel(QWidget *parent)
    : QLabel(parent)
{
}

QtClickableLabel::~QtClickableLabel()
{

}

void QtClickableLabel::mouseDoubleClickEvent(QMouseEvent *event) {
    emit clicked();
}

如果想实现捕获鼠标单击事件,只需要添加如下代码即可:

void QtClickableLabel::mousePressEvent(QMouseEvent *event) {
    emit clicked();
}
时间: 2024-10-04 14:31:39

Qt make clickable label 制作可点击的Label控件的相关文章

android 防止对控件的重复点击和同时点击多个控件

引 在一个手机界面中,用户经常会同时点击多个控件,经常会在短时间内对某一个控件点击多下,这样就会造成各种各样的bug. 防止点击多个控件 只要在xml文件中的父容器总加入这样一行代码即可: android:splitMotionEvents="false" 如在下面的LinearLayout中加入这行话,表示每一次只能点击LinearLayout其中的一个元素,点击了其他的元素是无效的. <LinearLayout android:layout_width="match

仿酷狗音乐列表点击item子控件展开功能

也是项目需要大家先来看看效果图 就是这样不过我的项目可能下面没有这么多项而已,说一下思路: 实际上下面展开的哪一块是被隐藏起来了的,可以获取itme的事件点击,接收点击事件展开(显示出来),点击另外的隐藏起来 下面是我的效果图(大家可以自己设置样式,我的比较丑) 好图片有点大,但是看的爽对不!下面贴代码 public class MainActivity extends Activity { private ListView mListView; private ListAdapter mAda

NGUI判断是否点击到UI控件

注意:UI应加上Box Collider 1.射线检测 UICamera发一条射线,射线碰到了东西就说明点击到了UI Ray ray=UICamera.mainCamera.ScreenPointToRay(Input.mousePosition);// 向屏幕发射线 RaycastHit hit; if(Physics.Raycast(ray,out hit,200))//射线的碰撞检测 {      print("点击了UI"); } 2.根据UICamera中的变量isOverU

Qt: 创建具有复选框的树形控件

在Qt中的树形控件称为QTreeWidget,而控件里的树形节点称为QTreeWidgetItem. 关于QTreeWidget控件和QTreeWidgetItem的更多详细知识点,可以查看Qt的官方帮助文档. QTreeWidget类: QTreeWidgetItem类: 实现的功能: 创建树形控件,当选中顶层树形节点时,子节点全部选中. 当选中部分子节点时,顶层树形节点处于灰色未全部选中状态.(部分选中状态) 当子节点全部选中,顶层节点变为选中状态. 具体步骤: 1.  新建Qt GUI应用

【Android UI】案例04配置控件点击效果(selector)

本例采用XML(selector),配置控件点击效果的实现,即当控件被触发或点击获取到焦点时,出现样式上的改变,以便给以较好的用户体验与操作感.本例需要引入的核心知识点的selector.xml.请参考学习:http://blog.csdn.net/mahoking/article/details/23690857.本例用于演示点击效果的控件为TextView.Button. [转载使用,请注明出处:http://blog.csdn.net/mahoking] 首先需要配置selector.xm

getHitRect获取点击控件的位置

public  void getHitRect(Rect outRect)                   Added in API level 1 Hit rectangle in parent's coordinates:找到控件占据的矩形区域的矩形坐标 Parameters outRect: The hit rectangle of the view:控件占据的矩形区域 测试代码如下,根据代码可以很直观的知道这个函数的用法: package com.sean.gethitrecttes

Kinect用体感来实现UI控件的点击

用体感来实现UI控件的点击,如点击按钮. 做法:用一个图片表示左手手掌,图片位置追踪左手手掌移动,当手掌位于UI控件的矩形内时,握拳表示点击该控件. using UnityEngine; using System.Collections; using UnityEngine.UI; /// <summary> /// 用Kinect实现UI的点击:追踪左手手掌,移动到UI矩形内握拳表示点击该按钮. /// </summary> public class UIClick : Mono

QT删除QWidget或QLayout下的控件

最近做了一个功能,点击按钮新建控件,再次点击需要删除上一次的结果,重新新建控件,如图: 设置参数,第一次点击分类按钮: 更改参数,第二次点击分类按钮: 试了很多方法都不行,update(),repaint()均没有效果,简单的移除layout也不管用,后来发现问题在于前一次创建的控件没有delete,方法很简单,看代码: QList<QPushButton*> btns = ui->scrollAreaWidgetContents->findChildren<QPushBut

VB6制作的自定义ocx控件

下载后,解压缩,有一个TreeviewExplorer.ocx文件 在Excel的开发工具选项卡,点击插入ActiveX控件 VBA窗体,VB6窗体.VB.Net窗体都可以使用这个自定义控件的功能. 下载: TreeviewExplorer.rar 原文地址:https://www.cnblogs.com/ryueifu-VBA/p/9094051.html