【发布时间】:2017-12-10 06:57:34
【问题描述】:
我是 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() 添加到私有插槽下的 mainwindow.h,但什么也没发生。
【问题讨论】:
-
在我的一个答案中,我做了一个derived
QLabelwithmousePressEvent()。更新:与@zapredelom 建议的非常相似。
标签: c++ qt mouseevent qlabel