0

我正在开发一个类似 X-plotter 的小部件,它可以实时绘制传入的数据。如果小部件有很多值并且它们不适合,我已经搜索了一种实现沿 x 轴滚动的解决方案。

我有以下方法来实现它:

  • 从支持滚动和子小部件的小部件派生并添加我自己的小部件,同时在实时更新期间使其越来越大:-> 我需要使用哪个父级以及如何避免绘制所有当前不可见的东西?
  • 以支持滚动条本身的方式修改我的小部件 - >但是如何?
  • 绘制/处理我自己的滚动条->最坏的情况:(

我真的在网上搜索了建议或示例,但是没有关于如何以一种好的方式“构建”自定义控件(除了绘制一些东西)特别是。在交互的情况下......对不起,但我一般是 GTK 的新手:/

4

1 回答 1

2

Gtk 中的大多数小部件都没有滚动条。

如果要滚动整个小部件,则必须实现GtkScrollable接口。然后,您将小部件添加到GtkScrolledWindow. 滚动窗口具有滚动条,这些滚动条GtkScrollbars通过界面和.GtkAdjustmentsGtkScrollableset_vadjustmentset_hadjustment

如果您只想添加一个滚动条并自己控制其行为,那么您需要以某种方式GtkScrollbar在您的小部件中添加一个,这意味着您也需要将其设为一个容器。

GtkScrollable方法如下,首先实现设置器vadjustmenthadjustment获取器,然后GtkAdjustments设置它们的下限和上限以及页面大小(一次可见多少小部件)。之后,您连接它们的value-changed信号,以便在拖动滚动条时刷新您的小部件。AGtkScrollable不会检查滚动条,只会检查将绑定到滚动条的调整。绘制小部件时,您将获得调整的value属性,以确定滚动条在水平轴和垂直轴上移动了多少。

于 2013-10-20T13:28:22.770 回答