0

Qt 和 GTK+ 等框架为开发人员提供了一些标准的用户控件,如编辑框、组合框等。但许多 GUI 应用程序具有更复杂的用户控件。例如,文本编辑器具有用户可以输入文本和插入图像或表格的区域。音频编辑器通常会显示音轨、音量指示器等的波形。我的问题是这些控件是如何绘制的?此外,这些控件通常可以处理事件——例如,可以选择文本编辑器中的表格,鼠标右键单击某些上下文菜单弹出等。所以,问题不仅在于绘制这些控件,还在于使控件处理事件。我只知道使用 Canvas 或 OpenGL,但我怀疑实现事件处理会很困难。可能,有更简单的方法来绘制用户界面?

4

1 回答 1

1

这是一个相当模糊的问题,所以这将是一个有点模糊的答案。一般来说,大部分工作已经完成。例如,Qt 已经有一个文本视图类、一个图像类和一个表格类(我对 Qt 不是很有经验,只是从我所知道的一般东西开始)。对于您正在谈论的文本编辑器,您可能会从 Qt 文本编辑小部件派生一个类,该小部件有一个处理程序来接受图像的拖动并可以绘制它们。同样,Qt 已经有了绘制图像和进行各种绘画的代码。

要绘制音频波形,您将拥有某种框或小部件(一般而言),它们将为每个采样间隔绘制一条垂直线以表示那里的音量或幅度。

是的,OpenGL 对于您在这里谈论的内容来说太过分了,因为您需要以某种方式编写自己的事件处理,而大多数 GUI 框架都会为您做到这一点。同样,对于一个模糊的问题,一个相当模糊的答案,但我希望它有所帮助!

于 2013-01-23T19:47:34.593 回答