Seite 1 von 1

[gelöst:] String aus C-function in QMessageBox verwenden

Verfasst: 27. September 2008 18:11
von qtNiko
Hi,
ich habe eine C-function, die einen Pointer auf char, also char *, zurückliefert.
Diese function möchte ich direkt innerhalb QMessageBox() verwenden, z.B.

Code: Alles auswählen

char * get_errorcode(int err);  // in einem h-File deklariert
...
QMessageBox(this,"Title", tr("Fehler" *get_errorcode(5)), ...);
Auch mit

Code: Alles auswählen

QMessageBox(this,"Title", tr(Qt::convertFromPlainText(*error_get_string(error))), ...) klappt es nicht.
Natürlich könnte man z.B. mit sprintf() vorher einen String erzeugen und in QMessageBox() verwenden. Aber ich würde doch gerne wissen, wie die Syntax lauten muss, damit ich get_errorcode() direkt innerhalb QMessageBox() einsetzen kann.

Verfasst: 27. September 2008 18:39
von Christian81
Eine QMessageBox mlchte einen QString, keinen char*. Also einfach mal in die QString-Doku schauen.

Verfasst: 27. September 2008 19:33
von CaptnChaos
QMessageBox(this,"Title", tr("Fehler") + QString(get_errorcode(5))));

Verfasst: 27. September 2008 19:54
von Christian81
KernelPanic hat geschrieben:QMessageBox(this,"Title", tr("Fehler") + QString(get_errorcode(5))));
Vielen Danke das Du die Leute für ihre Faulheit belohnst...

Ist außerdem nicht ganz richtig - nur wenn get_errorcode() einen ASCII-kodierten String zurückgibt.

Verfasst: 27. September 2008 22:23
von qtNiko
Danke, KernelPanik

Christian81, mit der Doku ist es nicht immer getan. Da hatte ich bereits gesucht.
Wenn man nicht so fit ist mit Qt und C++, wie einer wie du, dann sagt einem die Doku leider oft nicht den Fehler, den man macht. Wenn sich einer auskennt, dann ist die Doku glasklar. Wenn aber nicht, dann sucht man auch mal am Problem vorbei.

Verfasst: 27. September 2008 22:43
von Christian81
Wenn man sich die QString Doku anschaut und nach char sucht - und nichts findet sollte man lieber aufhören.

Verfasst: 29. September 2008 08:38
von CaptnChaos
Naja... was heisst Faulheit.. ich kenn das selbst. Manchmal sieht man eben den Wald vor Bäumen nicht. Und dann möchte ich ja auch geholfen kriegen, egal wie blöd meine Frage ist. Ich kanns nicht leiden wenn man statt ner vernünftigen Antwort die Leute "ankackt". Und solange die Frage, sei sie auch noch so blöd, in einem guten Deutsch und verbal ordnungsgemäß geäußert wurde, kann man sie auch freundlich beantworten.

@qtNiko
QMessageBox(this,"Title", tr("Fehler" *get_errorcode(5)), ...);
Weisst du was du hier getan hast oder war das nur ein Versehen? :wink:
Wenn nicht guck dir nochmal ein wenig die C++ Grundlagen an.