Je suis débutant en Qt, maintenant je veux rendre mon label cliquable, j'ai tellement cherché en ligne, mais personne ne me donne un vrai exemple de comment ils l'ont fait. Alors quelqu'un peut-il m'apprendre pas à pas? Maintenant, mon idée de base est de créer un nouveau fichier .c et un nouveau fichier .h respectivement, puis de les inclure dans mon mainwindow.c, puis de le connecter avec l'étiquette existante sous forme d'ui. C'est ce que j'essayais de faire, mais je ne peux pas le faire. J'espère que quelqu'un peut enseigner et mieux mettre l'image de l'étape dans la commande, merci. Voici le code clicklabel.h:Rendre Qlabel cliquable ou double cliquable en 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
Ce code clicklabel.c:
#include "clicklabel.h"
void ClickedLabel::mouseReleaseEvent(QMouseEvent *)
{
emit clicked(this);
}
Ce sont ce que j'ai ajouté dans mon mainwindow.c (le nom de l'étiquette est 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());
}
Bien sûr, je l'ai encouragé à clicklabel.h et aussi j'ai ajouté on_label_click void() à mon mainwindow.h sous fentes privées, mais rien ne se passe.
Dans une de mes réponses j'ai fait un [dérivé QLabel] avec 'mousePressEvent()'] (https://stackoverflow.com/a/44451423/7478597). Mise à jour: Il est assez similaire, comme suggéré par @zapredelom. – Scheff