Alles rund um die Programmierung mit Qt
STS301
Beiträge: 26 Registriert: 24. Januar 2009 18:50
Beitrag
von STS301 » 26. Januar 2009 13:19
hi
ich bin noch recht neu mit Qt und programmiere im Qt Creator.
Ich möchte alle Netzwerkadressen aller Schnittstellen in einer ListWidget anzeigen lassen, doch so wirklich funktioniert es noch nicht.
Code: Alles auswählen
ui->listWidget->addItem(QNetworkInterface::allAddresses());
der Befehl "allAddresses" habe ich von hier
http://doc.trolltech.com/4.3/qnetworkinterface.html
wäre für Antworten dankbar.
mfg STS301
Ginsengelf
Beiträge: 79 Registriert: 2. Mai 2007 10:21
Beitrag
von Ginsengelf » 26. Januar 2009 13:22
Was sagt es denn, wenn es "nicht richtig funktioniert"?
STS301
Beiträge: 26 Registriert: 24. Januar 2009 18:50
Beitrag
von STS301 » 26. Januar 2009 13:26
diese fehelermeldung
prject.cpp:9: error: no matching function for call to ‘QListWidget::addItem(QList<QHostAddress>)’
mfg STS301
franzf
Beiträge: 3114 Registriert: 31. Mai 2006 11:15
Beitrag
von franzf » 26. Januar 2009 13:38
Du kannst nur eine QStringList in das QListWidget einfügen.
Die passende Funktion hieße dann auch addItems .
QNetworkInterface::allAdresses() liefert aber keine QStringList zurück, sondern QList<QHostAddress>.
Musst dir also erst die Hostadressen-Liste in ne Stringlist umwandeln.
STS301
Beiträge: 26 Registriert: 24. Januar 2009 18:50
Beitrag
von STS301 » 26. Januar 2009 15:33
hmm, nur wie?
so funktioniert es nicht
Code: Alles auswählen
ui->listWidget->addItems(QVariant::toStringList(QNetworkInterface::allAddresses()));
etwas anderes habe ich in der Qt Creator Hilfe nicht gefunden
mfg STS301
franzf
Beiträge: 3114 Registriert: 31. Mai 2006 11:15
Beitrag
von franzf » 26. Januar 2009 15:43
Naja, da ist jetzt schon bissl Eigeninitiative gefragt.
QHostAddress hat eine Methode "toString()". Die liefert die Adresse als String zurück.
Nun musst du über alle Elemente deiner QList<QHostAddress> wandern, und den Wert, den QHostAddress::toString() liefert an die QStringList anhängen. Jetzt kannst du die Liste mit addItems in das ListWidget packen.
Natürlich musst du nicht erst ne StringList erstellen. Du kannst das auch sofort mittels
addItem( QListWidget* item )
oder
addItem( const QString& label )
machen
Bleibt dir überlassen.
STS301
Beiträge: 26 Registriert: 24. Januar 2009 18:50
Beitrag
von STS301 » 26. Januar 2009 18:23
ich stehe ab "Jetzt kannst du die Liste..." auf der Leitung.
mein derzeitiger Code ist
Code: Alles auswählen
ui->listWidget->addItems(QHostAddress::toString(QNetworkInterface::allAddresses()));
aber wieso meinst du, ich soll über alle Elemente wandern? Mit addItems sollte er es doch selbst machen oder?
mfg STS301
franzf
Beiträge: 3114 Registriert: 31. Mai 2006 11:15
Beitrag
von franzf » 26. Januar 2009 18:37
QHostAddress::toString ist NICHT static!
Ist ne stinknormale Methode.
Dann schau dir mal QList an.
Am Ende könnte das für dich dann so ausschauen:
Code: Alles auswählen
QStringList items;
foreach(QHostAddress a, QNetworkInterface::allAddresses()) {
items << a.toString();
}
ui->listWidget->addItems(items);
Ich hab das jetzt nicht kompiliert, kann also ein Tippfehler drin sein.
STS301
Beiträge: 26 Registriert: 24. Januar 2009 18:50
Beitrag
von STS301 » 26. Januar 2009 19:37
achso, so hast du es gemeint.
Danke jedenfalls
mfg STS301