单击时,故意两次调用同一信号

时间:2018-11-02 18:03:02

标签: python pyqt qml pyqt5 python-3.6

我有一个类似于repeater的ui,用于显示从pyqtProperty获取的不同用户的数据:

enter image description here

切换switch用于切换my data下内容的可见性。这些内容将是文本(如上图所示)或图像网格。

切换关闭:

enter image description here

+图标可在文本和图像网格之间切换内容的可见性。也就是说,单击+图标,description 0description 1将被隐藏,并显示图像网格。然后,加号图标将替换为-图标,如下所示:

enter image description here

现在,单击-图标,将隐藏图像网格,并且将再次显示description0description1。这次是相反的操作,如下所示:

enter image description here

切换switch+-会触发与连接{的signal update_store连接的相同的pyqtSlot {1}},keyflag的值来更新ui的bool的状态。然后,store通过store将更新后的notify状态传递回ui,以反映相应的更改(信息流类似于pyqtSignal)。 / p>

我想实现的是,当ui位于redux关闭且显示switch图标的状态下(如上图2所示),单击{{ 1}}图标将在+上切换,并显示图像网格,并且ui就像您在第三幅图像中看到的一样。

我试图通过以下方式通过单击+图标两次触发相同的信号来实现上述目的:

switch

第一个信号被成功触发,但是第二个信号没有触发,并且我得到一个错误+,并最终得到了这样的内容:

enter image description here

发生这种情况的原因是,当第一个信号触发时,MouseArea { anchors.fill: parent onClicked: { mySignal(modelData.key, 'expand', !modelData.expand) if (!modelData.active) { mySignal(modelData.key, 'active', true) } } } // expand determines if text or grid of images is shown // active determines if the contents are shown 已经在重新渲染更改,而当第二个信号触发时,“原始”信息不再存在?

在这种情况下,需要采取什么措施才能实现预期的操作?解决方案似乎不是解决方案,因为“原始”信息仍然不会出现。将两者合并为一个,然后触发连接到不同ReferenceError: modelData is not defined的{​​{1}}来处理此问题,这不是我要使用的解决方案。 qml是一种动态方法,也可以更改signal中的其他值。

0 个答案:

没有答案