C++ 如何利用私有Qt C++;应用程序编程接口?

C++ 如何利用私有Qt C++;应用程序编程接口?,c++,qt,C++,Qt,我试图使用qballotip类为Qt5.8.0中的按钮生成一个stilized工具提示 到目前为止,我一直在尝试通过提供默认参数修改头文件qsystemtrayicon\u p.h方法qballotip::showBallode(…)。然而,即使我在代码中包含标题qsystemtrayicon_p.h,在链接编译的源代码时也会遇到问题。出现下一个错误: LNK2019:未解析的外部符号:“公共静态无效QBallootTip::showBalloon(…)” 希望以前有人遇到过这种情况。提前感谢。

我试图使用
qballotip
类为Qt5.8.0中的按钮生成一个stilized工具提示

到目前为止,我一直在尝试通过提供默认参数修改头文件
qsystemtrayicon\u p.h
方法
qballotip::showBallode(…)
。然而,即使我在代码中包含标题
qsystemtrayicon_p.h
,在链接编译的源代码时也会遇到问题。出现下一个错误:

LNK2019:未解析的外部符号:“公共静态无效QBallootTip::showBalloon(…)”


希望以前有人遇到过这种情况。提前感谢。

要使用Qt的私有API,您必须在
.pro
文件中明确包含它:

QT += widgets-private
但是,不建议这样做,因为私有API没有文档记录,并且将您绑定到使用其构建的特定Qt版本。如果您的代码是GPL兼容的,那么您应该将BallootTip类的源复制到您的应用程序中


此外,这并不能解决您的问题,因为您不能简单地将头修改为已编译的库。这根本不可能。要么尝试从该类继承,要么将源复制到项目中并在那里修改它们。

您可以从QBallootTip继承并重写相关方法。您尝试执行的操作有点不清楚,但是,如果您更改了将声明与库中的函数不匹配的新函数的参数类型或数量。请检查:谢谢@scopchanov您的建议,这非常简单。不客气!你好,Felix,我已经试过了,但是错误仍然出现。我还将QBallootTip类作为朋友添加到我的类中,以便使用它的公共方法。实际上,最后我没有修改头文件中的任何内容。QSystemTrayIcon类正在使用此QBallootTip。但是我想直接使用这个QBallootTip类。我想我会放弃这个选择,我已经花了将近3周的时间。我会选择斯科普切诺夫解决方案。感谢you@JoelRuiz,仅供参考-将类添加为好友不会让您访问其成员。它的工作方式是oposite-friend类将有权访问声明为friend的类的成员。