365bet亚洲版登录-bet官网365入口

365bet亚洲版登录拥有超过百间客房,bet官网365入口的文化历经几十年的传承和积淀形成的核心内容获得业界广泛的认可,365bet亚洲版登录是目前信誉最高的娱乐场所,同国内外几百家网上内容供应商建立了合作关系。

有关QT的QCombox的掉坑出坑

   近日项目中费用在用到QCombox,然而在支付中,踩到了一个坑,花了三个夜晚,平昔在想,万幸最后找到难题所在了。

图片 1

这是工作的流程。直接说重视:QCombox在下拉窗更新数据的时候,会私下认可把下拉窗的第一个条数据,设置为当选的动静,那样的话,就能够产生curentTextChanged的一个非时限信号,直接把逻辑层原先有的数据给改善了。

  为此,举行了日志打印黄金时代探究竟:

void TalkWindow::getMicList(const QStringList & texts)
{

 DEBUG_TRACE("getCurrentText %s" , m_pDeviceWidget->m_pMicrophoneCombox->currentText().toStdString().c_str());
 if (m_pDeviceWidget == NULL) return;
 m_pDeviceWidget->m_pMicrophoneCombox->clear();
 int a = m_pDeviceWidget->m_pMicrophoneCombox->count();
 m_pDeviceWidget->m_pMicrophoneCombox->setCurrentIndex(-1);
 DEBUG_TRACE("getCurrentText1 %s", m_pDeviceWidget->m_pMicrophoneCombox->currentText().toStdString().c_str());
 m_pDeviceWidget->m_pMicrophoneCombox->addItems(texts);
 DEBUG_TRACE("getCurrentText2 %s", m_pDeviceWidget->m_pMicrophoneCombox->currentText().toStdString().c_str());
 m_pDeviceWidget->m_pMicrophoneCombox->setCurrentIndex(-1);
 m_pDeviceWidget->m_pMicrophoneCombox->insertItem(texts.size()+1, TR_TALK_DEVICE_COMBOX, 0);
 m_pDeviceWidget->m_pMicrophoneCombox->setCurrentIndex(-1);
 DEBUG_TRACE("getCurrentText3 %s", m_pDeviceWidget->m_pMicrophoneCombox->currentText().toStdString().c_str());
 m_pDeviceWidget->m_pMicrophoneCombox->setCurrentIndex(-1);
 DEBUG_TRACE("getCurrentText4 %s", m_pDeviceWidget->m_pMicrophoneCombox->currentText().toStdString().c_str());
 m_pDeviceWidget->m_pMicrophoneCombox->setCurrentIndex(-1);
 DEBUG_TRACE("getCurrentText!!!!! %s", m_pDeviceWidget->m_pMicrophoneCombox->currentText().toStdString().c_str());
}

   日志显如下:

 Line 151: [D:TalkWindow+13100:10356] 23:05:55.942 101261.059234 getCurrentText 麦克风 (7.1 SOUND EFFECT GAMING HEADSET)
 Line 152: [D:TalkWindow+13100:10356] 23:05:55.943 101261.059569 getCurrentText1 
 Line 155: [D:TalkWindow+13100:10356] 23:05:55.943 101261.060339 getCurrentText2 麦克风 (High Definition Audio 设备)
 Line 156: [D:TalkWindow+13100:10356] 23:05:55.944 101261.060662 getCurrentText3 
 Line 157: [D:TalkWindow+13100:10356] 23:05:55.944 101261.060866 getCurrentText4 
 Line 158: [D:TalkWindow+13100:10356] 23:05:55.944 101261.061036 getCurrentText!!!!! 

在getCurrentText2的日志中,很明显,把additems的数据加载完完,默认选中就变了,然后再执行 setCurrentIndex的时候,把默认选中置为空,也就是说,一共产生了两次 textchange的信号。

解决办法:
  我目前的解决办法是,在获取数据的时候,先断开信号槽的连接,disconnect函数,然后等把下拉窗的数据加载完,再connect函数连接上,这样,加载数据就避免了发送两次信号,修改原有的数据。当然也
可以一个标记bool值,信号发出去的时候,不去处理就好了,但是这样的话,可能不太好控制。所以我选择了前者。有更好的办法,多多指教。

本文由365bet亚洲版登录发布于操作系统,转载请注明出处:有关QT的QCombox的掉坑出坑

您可能还会对下面的文章感兴趣: