1
2
嗨@Artic我不是Qt专家,所以我不能给你小部件的信息,但是我可以给你一些用OpenGL创建标签的指针。在这里给出一个完整的实现是很棘手的,因为这在很大程度上取决于您想要如何显示文本。但我会试着概述一下你的一些选择。 https://learnopengl.com/In-Practice/Text-Rendering 位图字体的概念相当直截了当,所有字符都预先光栅化为一个纹理,然后根据需要的字符从纹理的每个部分进行采样。你用四边形来建立你的标签,用你为每个字符取样的位图的每一部分进行纹理处理。 符号距离字段基本上使用相同的技术,但字符的预光栅化纹理是使用符号距离字段呈现的,该字段处理标准位图字体所具有的一些问题。
一旦有了生成标签的方法,就可以决定是在屏幕空间还是在世界空间中显示标签。
如果只想在屏幕空间中向屏幕呈现一些文本,也可以“动态”呈现文本。你可以使用像SDL_ttf这样的库。 见: http://lazyfoo.net/tutorials/SDL/16_true_type_fonts/index.php 在本例中,使用SDL_ttf将文本字符串渲染到具有所选维度的曲面,然后可以从该曲面创建OpenGL纹理并将其渲染到屏幕。 很抱歉,如果这个信息有点宽泛,我需要一个更具体的问题来给你进一步的实现细节。 对于一个实现,我将根据您的需要来评估利弊。如果你还没有实现一个呈现文本的系统,最好还是坚持一些简单的东西;有更多的文本呈现技术比我在这里列出的要多,比如把文本转换成多边形和其他库,这些库试图处理一些与传统字体呈现技术有关的问题,但是你可能没有需要复杂的东西。 对于推荐使用哪种技术,我将使用您认为最合适的技术,通常在OpenGL中从头开始做一些事情需要更多的时间,但是它可以为您提供一组更好的功能,以便将来使用。然而,如果Qt已经有了一些很好的标签呈现工具(比如你提到的小部件),那么可能值得花时间学习如何使用它,因为它可能会产生更快的结果,如果你不需要的话,你不想重新发明轮子。在这一点上,尽管使用OpenGL从头开始做事情是非常有意义的,并且可以极大地提高您的理解力,因为当您没有依赖的抽象层时,您必须熟悉事情是如何完成的。最终取决于你。祝你好运! |
2
0
你可以在Qt中使用工具提示。当OpenGlWidget悬停在上面时,字符串将出现。可以使用工具提示方法,根据场景中鼠标的位置更改工具提示的文本
|
Dusan · 在类内设置mouseup事件 6 年前 |
Fajer Albloushi · 根据给定坐标移动鼠标 6 年前 |
Deepa · 无法在Qgraphics图像上绘制矩形 6 年前 |
Leo · SendInput始终将鼠标指针移动到左上角 6 年前 |
Denny Williams · 如何获得鼠标移动之间的时间? 6 年前 |
Brad · JavaScript鼠标移动导致滞后? 6 年前 |
Harrison Cramer · 变换后的D3图像居中 6 年前 |