近日项目中支付在用到QCombox,然则在开发中,踩到了一个坑,花了一个夜晚,一直在想,好在终极找到难点所在了。

 
 如今项目中支出在用到QCombox,但是在付出中,踩到了一个坑,花了一个夜晚,一直在想,好在最终找到难题所在了。

至于QT的QCombox的掉坑出坑,qtqcombox掉坑

 
 近来项目中支付在用到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值,信号发出去的时候,不去处理就好了,但是这样的话,可能不太好控制。所以我选择了前者。有更好的办法,多多指教。

近来项目中开销在用到QCombox,然则在付出中,踩到了一个坑,花了一个夜间,一向在想,好在最后…

博客: 安卓之家
掘金:
jp1017
微博:
至于QT的QCombox的掉坑出坑,使用技巧之创设优雅的。追风917
CSDN:
蒋朋的家
简书:
追风917

澳门金沙国际 2

澳门金沙国际 3

澳门金沙国际 4

那是业务的流程。直接说重点:QCombox在下拉窗更新数据的时候,会默许把下拉窗的率先个条数据,设置为当选的情况,那样的话,就会发出curentTextChanged的一个信号,直接把逻辑层原先有的数据给修改了。

那是工作的流水线。直接说重点:QCombox在下拉窗更新数据的时候,会默许把下拉窗的第二个条数据,设置为当选的情事,那样的话,就会发出curentTextChanged的一个信号,直接把逻辑层原先有的数据给修改了。

来自 Momentum 的美图

  为此,举办了日记打印一商量竟:

  为此,进行了日志打印一探讨竟:

那篇小说首要介绍基于 正则表达式 屏蔽不须求的字符串,
打造更不易的日记终端.

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());
}
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());
}

来源

先上一张图吧:

澳门金沙国际 5

澳门金沙国际,QQ截图20170331143254.png

从这么些图可以见见, 有些日记1微秒打印一遍, 那是多么恐怖啊,
分分钟终极就满了, pageUp 按键根本跟不上节奏, 导致看不清其余日志,
那大家过滤下呗, 难堪的是, 包名和本身的 APP 一致, 而且 Error 级别,
所以接纳 Show only selected application 根本没有成效, 显示屏唰唰而过,
没有一点点防范..

   日志显如下:

   日志显如下:

牛刀小试

不想见到, 就把他拉黑啊

毋庸置疑, 不难直接, 凶残高效.

直白在过滤器里面拉黑他, 用正则拉黑, 看起来是那样子:

澳门金沙国际 6

QQ截图20170331185934.png

不过并没有怎么卵用, 显示屏刷刷刷如故. 就差一个千里眼了…

关于 正则表达式, 可以看看那篇小说:

Linux基础之-正则表明式(grep,sed,awk)

前边是排斥 正则表达式 的, 后来发现威力无穷, 于是乎, 将来要完美利用咯.

 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值,信号发出去的时候,不去处理就好了,但是这样的话,可能不太好控制。所以我选择了前者。有更好的办法,多多指教。
    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值,信号发出去的时候,不去处理就好了,但是这样的话,可能不太好控制。所以我选择了前者。有更好的办法,多多指教。

规范拉黑

于是乎, google 了瞬间, 提示各位, 用 google 最好输入 英文关键字, 那样您会
得到 你想要的.

操作很粗略:
1: 点击右侧下拉窗, 拔取 Edit Filter Configuration,
打开过滤器配置窗口
2: 配置下那个窗口, 如下:

澳门金沙国际 7

QQ截图20170331191455.png

图表里写的还算详细, 包罗了着力用途, 相信你看过会创造自己的过滤器,
那样布署后, 终端瞬间清爽很多.

参照小说:

https://stackoverflow.com/questions/5511433/how-to-exclude-certain-messages-by-tag-name-using-android-adb-logcat

怎样让 Logcat 更赏心悦目, 请点击那里:

Android
Studio美化之高雅的logcat

末段,十分感谢您的阅读,有其余疑问,可未来边评论,谢谢!

欢迎插手安卓开发QQ群: 484167109

神奇的安卓开发网站:http://androidcat.com/

安卓开源库收集整理:https://github.com/XXApple/AndroidLibs

享受是一种美德,更是一种生活方法!!

或许你会说我是一个梦想者,但自我不是绝无仅有的一个。

悦分享,越快乐\_

欢迎交换,转载请申明出处,谢谢!

相关文章