关于QComboBox的currentIndexChanged()信号问题
来源:互联网 发布:知止阅读答案 编辑:程序博客网 时间:2024/05/16 17:48
http://blog.csdn.net/koilin/article/details/7599223
去年开始做界面,不过在过去的一年用的MFC,从今年开始用Qt.确实用Qt来做界面比MFC简单,而且更容易做出来炫炫的效果。折腾的这段时间里,其实每天都会发现新的问题,只是太懒了,一直都没记录下来。今天就来个开始吧:
问题描述:
我有两个QComboBox combo1, combo2:
- QComboBox *combo1 = new QComboBox;
- QComboBox *combo2 = new QComboBox;
- combo1->addItem("1-1");
- combo1->addItem("1-2");
- combo2->addItem("2-1");
- combo2->addItem("2-2");
- connect(combo1, SIGNAL(currentIndexChanged(int)), combo2, SLOT(process(int)));
- connect(combo2, SIGNAL(currentIndexChanged(int)), combo1, SLOT(process(int)));
然后是信号处理函数:
- void process(int index)
- {
- QComboBox *combo1 = new QComboBox;
- QComboBox *combo2 = new QComboBox;
- if (sender() == combo1)
- {
- combo2->setCurrentIndex(index);
- }
- else if (sender() == combo2)
- {
- combo1->setCurrentIndex(index);
- }
- }
这样两个combobox之间就产生了死循环。因为不管是手动改变combobox的当前index还是使用函数来设置当前的index都会发出index改变的消息,此时就需要使用关闭信号:
- void process(int index)
- {
- QComboBox *combo1 = new QComboBox;
- QComboBox *combo2 = new QComboBox;
- if (sender() == combo1)
- {
- combo2->blockSignals(true);
- combo2->setCurrentIndex(index);
- combo2->blockSignals(false);
- }
- else if (sender() == combo2)
- {
- combo1->blockSignals(true);
- combo1->setCurrentIndex(index);
- combo1->blockSignals(false);
- }
- }
好了,就这么多,写个文章还真不容易啊!
0 0
- 关于QComboBox的currentIndexChanged()信号问题
- 关于QComboBox的currentIndexChanged()信号问题
- 重置QComboBox项的时候产生currentIndexChanged信号
- 重置QComboBox项的时候产生currentIndexChanged信号
- qt QComboBox 组合框 的currentIndexChanged ( int index )信号的触发
- QComboBox的activated与currentIndexChanged两Signal的区别
- 关于QComboBox调用clear()崩溃的问题和解决办法
- qt QComboBox dataChanged()信号的发射
- Qt QComboBox 的 setCompleter 问题
- 关于信号等级的问题。
- 解决QCombobox调用clear()崩溃的问题
- Qt之下拉框QComboBox相关signal对比--activated与currentIndexChanged
- 几个关于信号的常识性问题
- 关于Qt信号连接的问题
- 关于信号显示频谱问题的思考
- android手机 - 关于信号强度的问题
- [SystemUI]关于android lte信号的问题
- 关于QComboBox你不知道的那些事!
- GeoLife——GPS轨迹信息
- UIImageView异步加载网络图片
- 数学“奥赛”:第一强国背后的思考
- 大转型中最难的是文化的改变
- 传统企业如何建设B2C平台做网络营销?
- 关于QComboBox的currentIndexChanged()信号问题
- mysql常用语法笔记
- Bitblaze环境搭建之TEMU/Tracecap的编译和安装
- 使用Array类生成数组
- Java NIO使用及原理分析 (一)
- ARP协议工作原理
- Plist字段列表,很全
- 黑马程序员 ---- 异常处理
- IOS开发隐藏状态栏(电池栏)