Klickbares Label

Alles rund um die Programmierung mit Qt
Antworten
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Klickbares Label

Beitrag von Label »

Hallo,

ich habe mir eine Klasse geschrieben die von QLabel und von QPushButton erbt damit ich mir ein klickbares Bild anzeigen lassen kann. Das Problem ist, sobald ich eine Funktion dieser Klasse Aufrufe welche in beiden Basisklassen (QLabel und QPushButton) vorkommt, bekomme ich einen Fehler
z.B. :

Code: Alles auswählen

Button *show_info = new Button(parameter, this);
	show_info->show();
Fehler: "Abfrage des Elements >>show<< ist mehrdeutig

Ich denke es liegt daran das QLabel und QPushButton von QWidgets abgeleitet sind

Jetzt meine Frage: kennt jemand einen Weg diesen Fehler zu umgehen oder eine andere Möglichkeit einen klickbaren Knopf mit eigenem Design zu realisieren?

Danke im Voraus, Label
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Wieso setzt du nicht einfach auf einen Button ein entsprechendes Bild?
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Beitrag von Label »

öhm ... ich muss dazu sagen ich arbeite mich gerade erst in Qt ein ...
wenn du mir sagst wie ich das anstellen kann probier ich es mal aus :)
(am besten mit Code-Beispiel)
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

Oder noch besser ein Link zur Doku: http://doc.trolltech.com/4.4/qabstractb ... #icon-prop
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

ich weiss nicht, inwiefern diese loesung einfach/kompliziert/sinnvoll/sinnlos ist, aber so in etwa funktioniert es (muss natuerlich ggf. noch etwas ausgebaut werden).

imgButton.h

Code: Alles auswählen

#ifndef __IMG_BUTTON_H_
#define __IMG_BUTTON_H_

#include <QAbstractButton>
#include <QPixmap>
#include <QPaintEvent>
#include <QPainter>

class ImgButton: public QAbstractButton
{
	public:
		ImgButton( const QString &p_img, QWidget *parent = 0 );
		virtual void paintEvent( QPaintEvent *event );
		
	private:
		QPixmap pm;
};

#endif
imgButton.cpp

Code: Alles auswählen

#include "imgButton.h"

ImgButton::ImgButton( const QString &p_img, QWidget *parent )
:QAbstractButton( parent )
{
	pm = QPixmap( p_img );
}

void ImgButton::paintEvent( QPaintEvent *event )
{
	QPainter painter;
	if( painter.begin( this ) )
	{
		painter.drawPixmap( event->rect(), pm, QRectF( 0.0, 0.0, pm.width(), pm.height() ) );
		painter.end();
	}
}
mfg,
julian
Antworten