4

简短的问题:小部件是否Gtk.Scaledrag-end信号而不是value-changed

我正在使用 gtk scale 小部件(滑块),根据文档,我应该使用value-changed信号来检测用户何时更改滑块。

现在用户抓住滑块并将其拖动到所需的值。当他们完成选择所需的值(即完成拖动)后,我想做一些事情。

但是,每次值更改时value-changed都会发出信号,包括在用户仍在将滑块拖动到所需值的过程中,因此我为起始值和结束值之间的每个值获取这些信号之一。

这给我的程序带来了很大的延迟,而且都是不必要的。

那么 - 有没有一种方法可以监听用户完成更改滑块上的值时触发的信号,而不是每次值更改时触发的信号?

目前,我通过在执行我的代码之前等待一小段时间来限制调用,只响应value-changed我在那段时间收到的最后一个信号。这工作正常,但我只是想知道是否有更合适的信号我应该听。

4

4 回答 4

3

检查gtk_range_set_update_policy()功能。您要将策略设置为GTK_UPDATE_DISCONTINUOUS.

于 2012-11-20T13:28:00.403 回答
2

您可以改用change-value信号。第二个论点是Gtk.ScrollType。将其与Gtk.ScrollType.JUMP应该产生所需的结果进行比较。

于 2017-12-10T21:34:26.910 回答
0

没有公共 API 可以做到这一点。我认为你的方法很好。

于 2012-11-02T12:57:43.360 回答
0

在 GTK+3 中(至少),Scale继承自Widget,它发出button-release-event信号。

于 2017-02-11T21:42:54.033 回答