qt中label双击_Qt之添加QLabel的点击事件

QLabel功能为显示了一个字符串或者图片等信息,它本身没有click信号。也就不能够响应click点击事件,有什么办法来实现来,我们可以子类化QLabel,实现MouseXXXEvent。

class MyLabel: public QLabel

{

Q_OBJECT

public:

MyLabel(QWidget * parent = 0);

private:

protected:

virtual void mouseReleaseEvent(QMouseEvent * ev);

signals:

void clicked(void);

};

MyLabel::MyLabel(QWidget * parent) : QLabel(parent)

{ }

void MyLabel::mouseReleaseEvent(QMouseEvent * ev)

{

Q_UNUSED(ev)

emit clicked();

}

就可以QObject::connect(m_MyLabel, SIGNAL(clicked()), this, SLOT(onClicked()))了。

实测OK。

上面只是简单的一个实例,实际上一个完整的click点击事件,要处理down,move,releae三个事件。

代码需要加上以下内容:

...

public void MouseDownEvent(...)

public void MouseUpEvent(...)

public void MouseMoveEvent(...)

...

摘自:响应QLabel的点击事件

http://blog.hehehehehe.cn/a/8334.htm

Qt 布局叠加

为 `QLabel` 添加鼠标双击事件可以按照以下步骤进行: 1. 在 Qt Designer ,打开你的界面文件,将 `QLabel` 拖动到界面上,右键单击 `QLabel`,选择 `添加行为` -> `双击`,这将创建一个名为 `label_2` 的 `QAction`。 2. 找到生成的 `.ui` 文件,将其转换为 `.h` 文件,`QLabel` 的名称为 `label_2`。 3. 在 `.h` 文件添加以下代码: ``` protected: void mouseDoubleClickEvent(QMouseEvent *event) override; ``` 此代码将创建一个受保护的重写函数,以处理 `QLabel` 的鼠标双击事件。 4. 在 `.cpp` 文件添加以下代码: ``` void YourClassName::mouseDoubleClickEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { // 处理左键双击事件 qDebug() << "Left Button Double Clicked!"; } else if (event->button() == Qt::RightButton) { // 处理右键双击事件 qDebug() << "Right Button Double Clicked!"; } } ``` 以上代码将处理 `QLabel` 的鼠标双击事件,并在控制台输出相应的信息。你可以在此处编写你的自定义事件处理代码。 5. 在 `.cpp` 文件,找到 `YourClassName::setupUi()` 函数,并将以下代码添加到该函数: ``` connect(label_2, &QLabel::mouseDoubleClickEvent, this, &YourClassName::mouseDoubleClickEvent); ``` 此代码将将 `QLabel` 的鼠标双击事件连接到 `YourClassName::mouseDoubleClickEvent` 函数,以便在发生鼠标双击事件时触发该函数。 完成以上步骤后,你的 `QLabel` 将具有鼠标双击事件,并且会在双击时触发自定义事件处理函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值