gpt4 book ai didi

c++ - 在Qt中使Qlabel可点击或双击

转载 作者:行者123 更新时间:2023-11-30 01:07:14 24 4
gpt4 key购买 nike

我是 Qt 的初学者,现在我想让我的标签可以点击,我在网上搜索了很多,但没有人给我一个真实的例子来说明他们是如何做到的。那么有人可以一步一步教我吗?现在我的基本思路是分别创建一个新的.c文件和新的.h文件,然后将它们包含到我的mainwindow.c中,然后将其与现有标签以ui形式连接起来。这些是我想做的,但做不到。希望有人能教教,最好把步骤图放在命令里,谢谢。这是 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 "clicklabel.h"
void ClickedLabel::mouseReleaseEvent(QMouseEvent *)
{
emit clicked(this);
}

这些是我添加到我的 mainwindow.c 中的内容(标签的名称是 click_test):

void data_labeling::on_label_clicked()
{
QString path="/home/j/Pictures/images.jpeg";
QPixmap cat(path);
connect(ui->click_test, SIGNAL(clicked()), this,
SLOT(on_label_clicked()));
ui->click_test->setPixmap(cat);
ui->click_test->resize(cat.width(),cat.height());

}

当然,我已将其提升为 clicklabel.h,并且我已将 void on_label_click() 添加到私有(private)插槽下的 mainwindow.h,但没有任何反应。

最佳答案

创建一个派生自 QLabel 的新类,重新实现 mousePressEvent 以发出自定义 pressed() 信号(或您需要的任何其他功能)

如果您需要在 ui 文件中使用可点击标签,请按照以下步骤操作:

  1. 在表单中添加QLabel

  2. 右键单击添加的标签并选择Promote to...

  3. 输入您的可点击标签类名称及其头文件名

  4. 按添加,然后在树中选择您的标签并选择推广

enter image description here

enter image description here

现在您可以使用您的子类标签(本教程实际上适用于任何子类小部件)作为使用 ui->

的任何 QWidget

关于c++ - 在Qt中使Qlabel可点击或双击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44946009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com