2017-09-10 3 views
-1

Ich versuche, die QBalloonTip Klasse zu verwenden, um eine stilisierte QuickInfo für eine Schaltfläche mit QT 5.8.0 zu generieren.Wie kann ich die private Qt C++ API nutzen?

Was ich bis jetzt versucht habe, ist die Header-Datei qsystemtrayicon_p.h die Methode QBalloonTip::showBalloon(...) durch Angabe von Standardargumenten zu ändern. Aber selbst wenn ich den Header qsystemtrayicon_p.h in meinen Code eingefügt habe, habe ich Probleme beim Verknüpfen des kompilierten Quellcodes. Nächster Fehler angezeigt:

LNK2019: unresolved external symbol: "public static void QBalloonTip::showBalloon(...)"

Hoffnung jemand dies vor konfrontiert. Vielen Dank im Voraus.

+0

Sie können von QBalloonTip erben und die entsprechenden Methoden überschreiben. – JLev

+1

Es ist ein wenig unklar, was Sie zu tun versuchen, aber wenn Sie den Typ oder die Anzahl der Parameter ändern, die eine neue Funktion deklarieren, die nicht mit der in der Bibliothek übereinstimmt. –

+0

Check out: https://www.youtube.com/watch?v=X9JD8gKGZ00 – scopchanov

Antwort

1

Um Qt private API zu verwenden, müssen Sie explizit in Ihrer .pro Datei enthalten zu:

QT += widgets-private 

Allerdings ist es nicht zu tun empfohlen, dass, da die privaten APIs nicht dokumentiert sind und Sie die Krawatte spezifische Qt-Version, mit der Sie gebaut haben. Wenn Ihr Code GPL-konform ist, sollten Sie eher die Quellen der Balloontip-Klasse in Ihre Anwendung kopieren.

Darüber hinaus wird dies Ihr Problem nicht lösen, da Sie nicht einfach eine Kopfzeile in eine bereits kompilierte Bibliothek ändern können. Dies ist einfach nicht möglich. Versuchen Sie entweder, von dieser Klasse zu erben, oder kopieren Sie die Quellen in Ihr Projekt und modifizieren Sie sie dort.

+0

Hallo Felix, das habe ich schon ausprobiert aber der Fehler tritt immer noch auf. Ich habe auch QBalloonTip Klasse als Freund in meiner Klasse hinzugefügt, um seine öffentlichen Methoden zu verwenden. Eigentlich habe ich am Ende nichts aus der Header-Datei geändert. Dieser QBalloonTip wird von der Klasse QSystemTrayIcon verwendet. Allerdings wollte ich diese QBalloonTip-Klasse direkt verwenden. Ich denke, ich werde mit dieser Alternative aufgeben, ich habe fast 3 Wochen damit verbracht. Ich werde mit Scopchanov Lösung gehen. Danke –

+0

@JoelRuiz, Nur für Informationen - Hinzufügen einer Klasse als Freund wird Ihnen keinen Zugriff auf seine Mitglieder geben. Es funktioniert umgekehrt - die Freundesklasse hat Zugriff auf die Mitglieder der Klasse, in der sie als Freund deklariert ist. – scopchanov

Verwandte Themen