2017-09-10 82 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