我是Qt的初學者,現在我想讓我的標籤可點擊,我在網上搜索了很多,但沒有人給我一個他們是如何做到的真實例子。那麼有人可以一步步教我嗎?現在我的基本思想是分別創建一個新的.c文件和新的.h文件,然後將它們包含到我的mainwindow.c中,然後以ui格式將其與現有標籤連接起來。這些是我想要做的,但不能做到。希望有人能教,並更好地把步驟圖片放在命令中,謝謝。 這裏是clicklabel.h代碼:Qlabel可點擊或雙擊Qt
#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也是我一直在私有槽添加無效on_label_click()我mainwindow.h,但什麼都沒有發生。
在我的答案中的一個使用你的子類的標籤(本教程其實適用於任何控件子類),我做了一個[衍生'QLabel'用'mousePressEvent()'](HTTPS:/ /stackoverflow.com/a/44451423/7478597)。更新:它與@zapredelom建議的非常相似。 – Scheff