qLabel klickbar machen
Verfasst: 20. Oktober 2015 12:51
Guten Tag,
ich bräuchte eure Hilfe, ich habe hier ein Problem, bei dem ich ziemlich auf dem Schlauch stehe.
Ausgangslage
Ich habe meine Oberfläche mit dem Designer gestaltet und anstatt ein paar Buttons habe ich 3 QLabel mit Pixmaps gefüllt. Diese Bilder sollen nun
klickbar gestaltet werden. Ich weiß das QLabel kein clicked() Event besitzt und ich deshalb eine subclass erstellen muss.
Vorgehensweiße
Anbei meine Subclass
CLICKABLELABEL_H
CLICKABLELABEL_CPP
Nun möchte ich in meiner mainwindow.cpp connects einrichten, damit beim anklicken eine bestimmte Funktion ausgeführt wird.
MAINWINDOW.H
MAINWINDOW.CPP
Hier weiß ich nun nicht, wie ich mein QLabel -> Beispiel ui->homeLabel so connecte, dass es beim klicken eine Funktion innerhalb der mainwindow ausführt.
Ich hoffe mein Problem ist verständlich und es gibt hier ein paar freundliche Menschen, die mir unter die Arme greifen.
Mit freundlichem Gruß
ich bräuchte eure Hilfe, ich habe hier ein Problem, bei dem ich ziemlich auf dem Schlauch stehe.
Ausgangslage
Ich habe meine Oberfläche mit dem Designer gestaltet und anstatt ein paar Buttons habe ich 3 QLabel mit Pixmaps gefüllt. Diese Bilder sollen nun
klickbar gestaltet werden. Ich weiß das QLabel kein clicked() Event besitzt und ich deshalb eine subclass erstellen muss.
Vorgehensweiße
Anbei meine Subclass
CLICKABLELABEL_H
Code: Alles auswählen
#ifndef CLICKABLELABEL_H
#define CLICKABLELABEL_H
#include <QObject>
#include <QLabel>
class ClickableLabel : public QLabel
{
Q_OBJECT
public:
explicit ClickableLabel( const QString& text="", QWidget* parent=0 );
~ClickableLabel();
signals:
void clicked();
protected:
void mousePressEvent(QMouseEvent* event);
};
#endif // CLICKABLELABEL_H
Code: Alles auswählen
#include "clickablelabel.h"
ClickableLabel::ClickableLabel(const QString& text, QWidget* parent)
: QLabel(parent)
{
setText(text);
}
ClickableLabel::~ClickableLabel()
{
}
void ClickableLabel::mousePressEvent(QMouseEvent* event)
{
emit clicked();
}Nun möchte ich in meiner mainwindow.cpp connects einrichten, damit beim anklicken eine bestimmte Funktion ausgeführt wird.
MAINWINDOW.H
Code: Alles auswählen
ClickableLabel *mLabel;
Code: Alles auswählen
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
mLabel = new ClickableLabel();
}
Ich hoffe mein Problem ist verständlich und es gibt hier ein paar freundliche Menschen, die mir unter die Arme greifen.
Mit freundlichem Gruß