QtLua捕获滑块值更改

时间:2018-07-03 14:09:07

标签: lua qslider

我正在尝试使用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中选中了“跟踪”复选框,以确保发出信号。

1 个答案:

答案 0 :(得分:0)

好的,所以我在QT的文档中为valueChanged()插槽进行了更多研究。事实证明,函数签名中有一个int参数,因此Lua connect代码正在寻找没有任何参数的函数签名。按预期将上面的代码修改为以下工作:

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

声明具有相同签名的函数也将传入所需的值,这为我节省了明确的值查询。 希望这一天对某人有用。