Eigene IP herausfinden

Alles rund um die Programmierung mit Qt
Antworten
STS301
Beiträge: 26
Registriert: 24. Januar 2009 18:50

Eigene IP herausfinden

Beitrag 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.
mfg STS301
Ginsengelf
Beiträge: 79
Registriert: 2. Mai 2007 10:21

Beitrag von Ginsengelf »

Was sagt es denn, wenn es "nicht richtig funktioniert"?
STS301
Beiträge: 26
Registriert: 24. Januar 2009 18:50

Beitrag von STS301 »

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 »

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 »

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 »

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 »

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 »

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 »

achso, so hast du es gemeint.

Danke jedenfalls
mfg STS301
Antworten