如何在C++上绘制复杂的用户控件
How can complicated user controls be drawn on C++?
像Qt和GTK+这样的框架为开发人员提供了一些标准的用户控件,如编辑框,组合框等。但是许多 GUI 应用程序具有更复杂的用户控件。例如,文本编辑器具有用户可以输入文本和插入图像或表格的区域。音频编辑器通常显示音轨、音量指示器等的波形。我的问题是这些控件是如何绘制的?此外,这些控件通常可以处理事件 - 例如,可以选择文本编辑器中的表,右键单击弹出一些上下文菜单等。因此,问题不仅在于绘制这些控件,还在于使控件处理事件。我只知道使用 Canvas 或 OpenGL,但我怀疑很难实现事件处理。也许,有更简单的方法来绘制用户界面?
这是一个相当模糊的问题,所以这将是一个有点模糊的答案。总的来说,大部分工作已经完成。例如,Qt已经有一个文本视图类,一个图像类和一个表类(我对Qt不是很有经验,只是从我知道的一般东西开始)。对于您正在谈论的文本编辑器,您可以从Qt文本编辑小部件中派生一个类,该小部件具有一个处理程序来接受图像的拖动并可以绘制它们。同样,Qt已经有了绘制图像和进行各种绘画的代码。
要绘制音频波形,您将有某种框或小部件(一般来说),它将为每个采样间隔绘制一条垂直线来表示那里的音量或振幅。
是的,OpenGL对于你在这里谈论的内容来说是矫枉过正的,因为你需要以某种方式编写自己的事件处理,而大多数GUI框架都会为你做到这一点。同样,对于一个模糊的问题,这是一个相当模糊的答案,但我希望它有所帮助!
相关文章:
- C++如何通过用户输入删除列表元素
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 函数复杂度分析
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 在C++中,我如何接受不同于同一行的用户输入
- 当用户超过按钮点击限制时报告
- 表达式模板玩具示例:用户定义的强制转换不适用于复杂类型
- GDB 用户定义函数:如何传递复杂参数
- 如何在C++上绘制复杂的用户控件
- 用户界面-如何去gui一个复杂的纠缠c++ /Qt4应用程序