2017-09-10 123 views
-1

我正在嘗試使用QBalloonTip類爲QT 5.8.0的按鈕生成一個stilized工具提示。如何使用私人Qt C++ API?

我到現在爲止所嘗試的是通過給出默認參數修改頭文件qsystemtrayicon_p.h方法QBalloonTip::showBalloon(...)。但是,即使在我的代碼中包含頭文件qsystemtrayicon_p.h,我在鏈接編譯後的源代碼時遇到了問題。出現下一個錯誤:

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

希望有人已經面對過這一點。先謝謝你。

+0

您可以從QBalloonTip繼承並覆蓋相關的方法。 – JLev

+1

您試圖執行的操作有點不清楚,但是如果您更改將聲明與庫中的函數不匹配的新函數的參數的類型或數量,則會發生這種情況。 –

+0

看看這個:https://www.youtube.com/watch?v=X9JD8gKGZ00 – scopchanov

回答

1

使用Qt的私有API,你必須明確地將其包含在.pro文件:

QT += widgets-private 

但是,不建議這樣做,因爲私有API沒有記錄,並配合你的特定的Qt版本。如果你的代碼符合GPL標準,你應該可以將balloontip類的源代碼複製到你的應用程序中。

此外,這不會解決您的問題,因爲您不能簡單地將標題修改爲已編譯的庫。這根本不可能。要麼嘗試從該類繼承,要麼將源複製到您的項目並在那裏修改它們。

+0

你好菲利克斯,我已經嘗試過,但仍然出現錯誤。我還在我的課堂上添加了QBalloonTip類作爲朋友,以便使用它的公共方法。實際上,最後我沒有修改頭文件中的任何內容。 QBalloonTip正在被QSystemTrayIcon類使用。不過,我想使用此QBalloonTip類direclty。我想我會放棄這個選擇,我已經花了近3周的時間。我會用Scopchanov解決方案。謝謝 –

+0

@JoelRuiz,僅供參考 - 以朋友的身份添加課程不會讓您訪問其成員。它以相反的方式工作 - 朋友類可以訪問聲明爲朋友的類的成員。 – scopchanov