首页 > 解决方案 > 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 中选中了跟踪复选框,以确保发出信号。

标签: luaqslider

解决方案


好的,所以我在 QT 的文档中为 valueChanged() 插槽挖掘了更多内容。原来,函数签名中有一个 int 参数,所以 Lua 连接代码正在寻找一个没有任何参数的函数签名。将上面的代码修改为以下代码可以按预期工作:

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

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


推荐阅读