Qt 中 某些类无法使用的问题

一尺丈量 2016-03-05 03:36:26
出于项目的需要,需要使用到QFontMetrics类。我在查看这个类的源码时,看到QFontMetrics::width函数的实现用来了两个类:QFontEngine和QVarLengthGlyphLayoutArray,如下图所示:

但实际上,这两个类在帮助文档中是无法查询到的。同时想要include进来也是不行的。

但是,由于我在使用QFontMetrics类,QFontEngine在qt creator中是可以感知的,但是无法使用,原因是没有类的定义。

发生这种情况的原因很明显,QFontEngine的定义不知道藏在哪里,我没有办法include到当前项目中。
但如果在本地搜索qfontengine.cpp文件,它是存在的,但它的头文件不知道定义在哪里。。。

以前也会碰到qt实现中会用到的类,但在帮助文档无法找到的情况,但那时并没有注意那么多。现在说了那么多,其实我想知道的是像这种情况,这些类要怎么才能够在qt中使用?在qt中是不是还有很多这样的类呀?

经过查找,QFontEngine的头文件为qfontengine_p.h,但这些带“_p”的头文件是怎么回事?定义在其中的类我们没有办法使用的???
...全文
968 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
一尺丈量 2016-03-07
  • 打赏
  • 举报
回复
引用 3 楼 foxyz 的回复:
版主已经解答的很详细了。这些类本身就不是提供给外边用的,其实都是private的
有时候就是要用到这些类呀。
一尺丈量 2016-03-07
  • 打赏
  • 举报
回复
引用 2 楼 dext 的回复:
严格说来 QFontEngine 并不属于 Qt API 的一部分。 这个只要在 pro 文件中添加

QT       += core-private gui-private
然后再你需要 QFontEngine 的地方

#include <private/qfontengine_p.h>
就可以了。
版主好强大,谢谢版主。
donwmufromdying 2016-03-06
  • 打赏
  • 举报
回复
版主已经解答的很详细了。这些类本身就不是提供给外边用的,其实都是private的
dext 2016-03-06
  • 打赏
  • 举报
回复
严格说来 QFontEngine 并不属于 Qt API 的一部分。 这个只要在 pro 文件中添加

QT       += core-private gui-private
然后再你需要 QFontEngine 的地方

#include <private/qfontengine_p.h>
就可以了。
一尺丈量 2016-03-05
  • 打赏
  • 举报
回复
没人回复,我自己更新一下吧,QFontEngine类必须也是可以使用的,大名鼎鼎的Telegram项目就使用了这些类,要使用这些类,好像需要一个qtstatic的东西。。。

16,173

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧