QtLua 捕捉滑块值的变化

我正在尝试使用QtLua制作一个简单的UI,在其中我希望每次滑块变化时捕捉到其值。我尝试连接到 valueChanged() 信号,但是 qlua 给我以下错误提示:

cannot find source signal valueChanged()

代码片段如下:

slide = (widget.sliderLight)
    print(slide)
    qt.connect(slide, 'valueChanged()',
                 function()
                     print('Value: ', slide.value)
                 end)

所以只是试图打印每次值发生变化时的结果。但我无法让它工作。qtlua 的文档中没有 qslider 类,所以对我来说这是个死胡同。我也找不到任何使用 qtlua 和连接到 valueChanged() 信号的滑块的示例。我找到的唯一一个例子是 qtuiloader 示例中的 test.lua,但它使用定时器,我认为定时器以常规间隔集中。我的目标是将其连接到图像处理系统,所以如果我可以将其绑定到值发生变化时,而不是使用定时器和检查系统,那就更有用了。我在qt中很新,所以肯定错过了什么。任何帮助都将不胜感激! 哦,我确保在 qtdesigner 中选中了跟踪复选框,以确保信号被发射。

点赞
用户5714313
用户5714313

好的,所以我在QT的valueChanged()插槽的文档中深入挖掘了一下。结果,这个函数签名中有一个int参数,所以Lua连接代码在寻找没有任何参数的函数签名。将以上代码修改如下,就能按预期运行:

slide = (widget.sliderLight)
    print(slide)
    qt.connect(slide, 'valueChanged(int)',
                 function(w)
                     print('Value: ', w)
                 end)

声明一个具有相同签名的函数也会传递所需的值,这可以节省我明确值查询的工作。 希望这对某个人有用。

2018-07-04 00:05:21