Seite 1 von 1

Eigene IP herausfinden

Verfasst: 26. Januar 2009 13:19
von STS301
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.

Verfasst: 26. Januar 2009 13:22
von Ginsengelf
Was sagt es denn, wenn es "nicht richtig funktioniert"?

Verfasst: 26. Januar 2009 13:26
von STS301
diese fehelermeldung

prject.cpp:9: error: no matching function for call to ‘QListWidget::addItem(QList<QHostAddress>)’

Verfasst: 26. Januar 2009 13:38
von franzf
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.

Verfasst: 26. Januar 2009 15:33
von STS301
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

Verfasst: 26. Januar 2009 15:43
von franzf
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.

Verfasst: 26. Januar 2009 18:23
von STS301
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?

Verfasst: 26. Januar 2009 18:37
von franzf
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.

Verfasst: 26. Januar 2009 19:37
von STS301
achso, so hast du es gemeint.

Danke jedenfalls