Aller Anfang ist schwer: QTableWidgetItem erweitern
Verfasst: 30. Juni 2010 22:17
Hallo,
habe schon wunde Finger vom Suchen und Schreiben, daher jetzt mal hier eine Frage vom Anfänger an die Profis. C ist absolt kein Thema, aber bei C++ bin ich (relativ) neu und bei Qt mache ich gerade meine ersten Schritte.
Das Projekt soll einige Daten von einem Sack von via USB angeschlossener Sensoren Darstellen. Nix großes, nix aufwändiges. Dazu habe ich die libUSB eingebunden und hatte gedacht, dass das der schwere Teil sein würde. Aber die Sensoren sehe ich alle und kann sie auch ansprechen und auslesen.
Um die Sensoren im Programm dar zu stellen, fand ich ein QTableWidget sehr praktisch. Also habe ich von der Klasse QTableWidgetItem eine eigene Klasse RtcDevice abgeleitet und diese dann um die Daten und Funktionen für einen solchen Sensor erweitert.
Nun bin ich davon ausgegangen, dass die abgeleitete Klasse auch die übergeordnete Klasse aufruft, was aber nicht passiert.
Ich kann in Debug sehen, dass immer ein neuer Sensor angelegt wird und seine Daten ausgelesen werden, aber meine QTableWidget bleibt leer.
Ich bin ein paar Jahre raus aus der Vererbungslehre, es ist sicher nur was ganz dummes, aber ich finde es nicht..
Ich muss noch hinzufügen, dass diese lösung nicht der optimale Weg sein muss. Wenn ich also komplett auf dem Holzweg bin, dann nehme ich auch gerne Vorschläge entgegen.
Danke schon mal vorab!
Gruß, Astralix
habe schon wunde Finger vom Suchen und Schreiben, daher jetzt mal hier eine Frage vom Anfänger an die Profis. C ist absolt kein Thema, aber bei C++ bin ich (relativ) neu und bei Qt mache ich gerade meine ersten Schritte.
Das Projekt soll einige Daten von einem Sack von via USB angeschlossener Sensoren Darstellen. Nix großes, nix aufwändiges. Dazu habe ich die libUSB eingebunden und hatte gedacht, dass das der schwere Teil sein würde. Aber die Sensoren sehe ich alle und kann sie auch ansprechen und auslesen.
Um die Sensoren im Programm dar zu stellen, fand ich ein QTableWidget sehr praktisch. Also habe ich von der Klasse QTableWidgetItem eine eigene Klasse RtcDevice abgeleitet und diese dann um die Daten und Funktionen für einen solchen Sensor erweitert.
Code: Alles auswählen
rtc_class.h
----------------
class RtcDevice: public QTableWidgetItem
{
public:
RtcDevice( struct usb_device *udev);
~RtcDevice();
QTableWidgetItem* clone() const;
usb_dev_handle *udev;
System_t system;
sensor_t tsensor[eTSensNum];
int rtcFetchSingle();
int rtcFetchRuntime();
};
rtc_class.c
----------------
RtcDevice::RtcDevice(struct usb_device *dev)
{
udev = usb_open(dev);
qDebug("Opening Device %s ...", dev->filename);
if( udev)
{
QString btn;
rtcFetchSingle();
rtcFetchRuntime();
qDebug("Fine!");
btn = QString((char*)desc.DevName) + "\n" + QString((char*)desc.SerNum);
this->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled);
this->setSelected(false);
qDebug("Init OK");
}
qDebug("Done.");
}
RtcDevice::~RtcDevice()
{
qDebug("Destroy RtcDevice...");
if( this->udev)
{
qDebug(".. Closing Device");
usb_close( udev);
}
qDebug("Done.");
}
QTableWidgetItem *RtcDevice::clone() const
{
return new RtcDevice(*this);
}
...
Ich kann in Debug sehen, dass immer ein neuer Sensor angelegt wird und seine Daten ausgelesen werden, aber meine QTableWidget bleibt leer.
Ich bin ein paar Jahre raus aus der Vererbungslehre, es ist sicher nur was ganz dummes, aber ich finde es nicht..
Ich muss noch hinzufügen, dass diese lösung nicht der optimale Weg sein muss. Wenn ich also komplett auf dem Holzweg bin, dann nehme ich auch gerne Vorschläge entgegen.
Danke schon mal vorab!
Gruß, Astralix