1

我又一次绝望了。我已将 QML 接口添加到现有 QT C++ 应用程序。知道我想实现这样的东西:

用户想连接图片让他们同步跳过。所以他点击了一个名为“连接”的按钮,然后点击第一张图片,然后点击第二张图片。按钮的信号带有一个 id,因此 connect-Function 知道点击了哪些图片并将最终信号发送到 c++ 部分。

我想要这样的东西:

signal connectGalleys(int id1, int id2)
function connectIDs(){
    var id1
    var id2
    id1 = waitFor(onButtonClicked(id))
    id2 = waitFor(onButtonClicked(id))
    saveConnection(id1,id2)
 }
 onConnectClicked: connectIDs()

那么,有谁知道如何解决这个问题?

非常感谢!

4

1 回答 1

2

据我所知,您不能使用这样的“等待”方法,因为您必须完成connectIDs对事件循环的调用才能接管,并且能够对您的 GUI 执行任何操作(包括选择图片)。

解决方案是拥有“软件模式”,当您单击时connect,您将模式更改为,例如connectMode,然后返回。现在,当您单击一张图片时,您可以检查模式是否为connectMode,并将其标记为选中。如果已经选择了另一张图片,那么您还需要调用connectFinished(),它会执行您需要做的任何事情来连接它们,然后将软件转回normalMode.

于 2013-06-21T10:17:54.047 回答