Qt:添加点击事件的Label并显示图片

1.给label添加点击事件

  Qt中原本的label是没有点击事件的,如果想添加点击事件的话,可以继承QLabel类并重载鼠标事件(比如mousePressedEvent),然后在鼠标事件中发送一个信号,具体如下:

// clicklabel.h

#ifndef CLICKEDLABEL_H
#define CLICKEDLABEL_H

#include <QWidget>
#include <QLabel>

class ClickedLabel : public QLabel
{
    Q_OBJECT
public:
    ClickedLabel(QWidget *parent=0): QLabel(parent){}
    ~ClickedLabel() {}
signals:
    void clicked(ClickedLabel* click); // 点击信号
protected:
    void mouseReleaseEvent(QMouseEvent*); // 重载了鼠标释放事件

};

#endif // CLICKEDLABEL_H
// clicklabel.c

#include "clickedlabel.h"
void ClickedLabel::mouseReleaseEvent(QMouseEvent *)
{
    emit clicked(this); // 在点击事件中发送信号
}

2.显示图片

  使用QPixmap可以在label中显示图片,具体如下:

QString path = "logo.png";  // 定义图片的路径

QPixmap img(path); // 实例化一个img

ui->label_img->setPixmap(img); // 在label中添加img

ui->label_img->resize(img.width(),img.height());  // 使用图片尺寸设置label大小

3.完整例程

  新建一个空白的窗体,然后在代码中添加:

// 在mainwindow.h中添加 (包含头文件 clicklabel.h)private slots:  void on_label_clicked();private:
  ClickLabel * clickLabel;

// 在mainwindow.cpp中的构造函数中添加
clickLabel = new ClickLabel(this);
QString path="logo.png";
QPixmap img(path);
clickLabel->setPixmap(img);
clickLabel->resize(img.width(),img.height());connect(clickLabel,SIGNAL(clicked(ClickLabel*)),this,SLOT(on_label_clicked()));  
时间: 2024-10-06 00:07:18

Qt:添加点击事件的Label并显示图片的相关文章

IOS - UIView添加点击事件

UIView通过手势(Gesture-UITapGestureRecognizer)添加点击事件, 类似于UIButton的效果. 示例: UIImageView *iKnowIcon = [CYResource loadImageView:@"free-question-once-more-i-know.png"]; iKnowIcon.top = questionIcon.top + scaleWidthWith320(200); iKnowIcon.centerX = self.

echarts对每个data[i]的图片添加点击事件

1.综述:以饼图为例,只需要对echarts对象option添加以下几行代码即可 //添加点击事件(单击),还有其他鼠标事件和键盘事件等等 myChart1.on("click", function (param){ alert(param.dataIndex+':'+option1.series[0].data[param.dataIndex].name); }); 2.效果图 3.目录结构 4.<head></head>和<body></b

使用for循环添加点击事件时,获取i值的方法

比如页面上有一个ul,数个li,现在给li添加点击事件. var li = document.getElementsByTagName("li"); for(var i = 0; i < li.length; i++) { li[i].addEventListener("click",function () { console.log(i); }) } 但是,这样写之后我们发现,点击任何一个li,打印的值都为5,这是因为闭包中共用i值,而i的值由于执行for循

UIView利用hitTest添加点击事件

UIView利用hitTest添加点击事件 by 伍雪颖 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { CGPoint point = [[touches anyObject] locationInView:self.view]; CALayer *layer = [self.view.layer hitTest:point]; if (layer == self.blueView.layer) { [[[U

为未来元素添加点击事件的两种写法

哈哈哈,小七来了,对于经常搬砖撸代码的猴子们,一定会遇到给好多li(死的还是动态字符串拼接生成的(对未来元素添加不到事件的看之前写的事件委托))添加点击事件 第一种: var index=0; for(var i=0;i<li.length;i++){ li[i].index=i;//必须的 li[i].onclick=function(){ alert(1) } } 第二种: 事件的另一种写法(动态生成的多个li标签都加onclick="jia(this)就不用for循环里面嵌套点击事件

【Swift 2.1】为 UIView 添加点击事件和点击效果

前言 UIView 不像 UIButton 加了点击事件就会有点击效果,体验要差不少,这里分别通过自定义和扩展来实现类似 UIButton 的效果. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 一.为 UIView 添加点击事件 extension UIView { func addOnClickListener(target: AnyObject, action: Sel

iOS开发&mdash;&mdash;给ImageView添加点击事件

      给ImageView添加点击事件   1: cell.pictureView.userInteractionEnabled = YES; 2: UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc]initWithTarget:cell action:@selector(displayPicture:)]; 3: gr.numberOfTapsRequired = 1; 4: gr.numberOfTouchesReq

添加点击事件

在ButtonSprite中封装了点击事件ButtonSprite btn = new ButtonSprite(0, 0, Button, this.getVertexBufferObjectManager());btn.setOnClickListener(new OnClickListener() {                @Override                public void onClick(ButtonSprite pButtonSprite, float p

jquery无法为动态生成的元素添加点击事件的解决方法

遇到 jquery无法为动态生成的元素添加点击事件,谷歌一下,整理一下解决方法如下: (<li>中间的元素是动态生成的), 现在想为<i>添加点击事件, 例子如下: <div> <ul> <li> <span> <i class='icon'>这是元素内容</i> //i是动态生成 </span> </li> </ul> </div> 解决方法如下: $(docu