如何在Qt中实现这种下拉菜单?(具体是PyQt4)
我想要的下拉窗口是这个样子的。它有多个列,每列里放着不同类型的数据。我试过用制表符来分隔数据,但看起来很乱。请问我怎么才能用PyQt4做出这样的下拉框/组合框呢?(忽略黑色框框,我只是想隐藏我的系统文件)。
3 个回答
0
当然,你必须使用QColumnView,它是Listview的扩展版本,或者说是多个Listview的组合。你知道的,Listview其实就是Combobox的一个开放版。
1
我没有用过PyQt,但如果它和PyGTK差不多的话,可以使用类似于树形控件的东西。
不过,作为另一种选择,你可以简单地使用字符串格式化(这比用制表符分隔要好得多):
(新的格式化方式)
'{0:20}{0:20}'.format('l','lines in current document')
如果你想确保每个最大的字符串都有足够的空间,你可以参考这个方法:
leftwidth = len(max(['l', 'foo', 'longitem'], key=len))
rightwidth = len(max(['Number of lines',
'some other option',
'yet another long option'], key=len))
'{key:{L}}{desc:{R}}'.format(key='l',desc='Number of lines',
L=leftwidth, R=rightwidth)
而且如果你把键/描述存储在字典里,自动化这个过程会更简单。
2
你可以通过使用自己定制的项目代理来实现。这可能不是一个简单的答案,但这样你就能完全掌控了 :)
可以查看这个链接了解更多信息:http://doc.trolltech.com/4.6/model-view-delegate.html