• 12383阅读
  • 8回复

[提问]QComboBox实现树状下拉选择 [复制链接]

上一主题 下一主题
离线nanzsn
 
只看楼主 倒序阅读 楼主  发表于: 2013-07-10
— 本帖被 XChinux 从 网站公告 移动到本区(2013-07-10) —
关键词: QComboBoxQTreeView
最近做QT ,需要实现一个QCombox下能够实现下拉树状视图,用了view/model框架,model是QStandarItemModel,viewQTreeView。虽然实现了功能,但是点击父节点时,下拉框就会消失,后来采用 combobox->showpopup()。但是又遇到新的问题,有的时候,点着点着,那个下拉框就不动了,父节点无法展开也无法收缩。不知道有没有人遇到过这样的问题。
离线pxiao_xiao

只看该作者 1楼 发表于: 2013-07-10
可以空一行 让父节点从第二行开始
离线nanzsn
只看该作者 2楼 发表于: 2013-07-11
回 1楼(pxiao_xiao) 的帖子
试过了,好像不行啊,点着点着 ,父节点就无法展开或者收缩了。
离线XChinux

只看该作者 3楼 发表于: 2013-07-12
换种思路做吧,不要在QComboBox下拉框里用TreeView之类的了,有许多按键事件冲突的,从而导致很麻烦.点击QComboBox的下拉按钮时,自己另做个QTreeView层放到合适的位置显示吧,这样效果比较好.当然你要考虑关联的地方也要多点.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线nanzsn
只看该作者 4楼 发表于: 2013-07-13
回 3楼(XChinux) 的帖子
你的意思是QComboBox只作为一个下拉按钮,但是下拉列表是空的,而另外做一个TreeView放在下拉按钮的下方,模拟出TreeView好像是QComboBox的下拉列表的样子吗?  还有哪个事件冲突是怎么回事,是QT本身的问题,还是自己代码写的有问题呢?
离线XChinux

只看该作者 5楼 发表于: 2013-07-13
Re:回 3楼(XChinux) 的帖子
引用第4楼nanzsn于2013-07-13 08:59发表的 回 3楼(XChinux) 的帖子 :
你的意思是QComboBox只作为一个下拉按钮,但是下拉列表是空的,而另外做一个TreeView放在下拉按钮的下方,模拟出TreeView好像是QComboBox的下拉列表的样子吗?  还有哪个事件冲突是怎么回事,是QT本身的问题,还是自己代码写的有问题呢?

对.
树型视图可以放到Completer里的,但我使用的总体效果不好,所以你还是用我说的你内办法来模拟实现吧.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线nanzsn
只看该作者 6楼 发表于: 2013-07-14
回 5楼(XChinux) 的帖子
我发现不太好关联起来啊,好郁闷,不晓得关联哪个信号跟哪个槽,还是用事件过滤器或者重新实现某个事件呢?
离线XChinux

只看该作者 7楼 发表于: 2013-07-14
那你看看QComboBox的代码,如何实现的.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线dxwang

只看该作者 8楼 发表于: 2014-09-18
请问一下  QtComboBox设置了setItemDelegate,   点combobox的时候,怎么没有进入代理的 createEditor 函数呢。  设了一下 setModel和 setView可以显示树形。 但是想用delegate,可以交互起来方便一点, 可是树形就是出不来,是哪来不对吗?

    _cmblStation = new QComboBox( this );
    _cmblStation->setItemDelegate( new OMIDynSubControlWidgetDelegate(this,_cmblStation));
每天进步一点点
快速回复
限100 字节
 
上一个 下一个