我是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,并在我的 mainwindow.h 中的 private slots 下添加了 void on_label_click(),但什么也没发生。
mousePressEvent()
的派生QLabel
。更新:这与@zapredelom建议的非常相似。 - Scheff's Cat