如何在Qt中实现这种下拉菜单?(具体是PyQt4)

1 投票
3 回答
556 浏览
提问于 2025-04-16 00:32

我想要的下拉窗口是这个样子的。它有多个列,每列里放着不同类型的数据。我试过用制表符来分隔数据,但看起来很乱。请问我怎么才能用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

撰写回答