如何在 QTableView 的列中显示下拉列表并根据下拉列表进行过滤
Posted
技术标签:
【中文标题】如何在 QTableView 的列中显示下拉列表并根据下拉列表进行过滤【英文标题】:How to display drop-down in column of QTableView and filter based on drop-down 【发布时间】:2011-07-04 12:04:04 【问题描述】:我是 Qt 的新手。我必须在QTableView
中显示一大块数据并按列过滤。为此,我使用了QSortFilterProxyModel
,但根据要求,QTableView
的每一列都应该有一个下拉列表,显示该列中的唯一值。在下拉列表中选择这些值中的任何一个时,只有在列中具有该特定值的行才会显示在 QTableView
中(就像在 Excel 中一样)。
我将如何实现这个?
【问题讨论】:
虽然它是用于旋转框,而不是组合框,但标准 Qt 示例 spinboxdelegate 展示了如何创建QItemDelegate
子类来做你想做的事。
【参考方案1】:
一周前我遇到了同样的问题 我找到了一个教程,解释了如何做到这一点。见下面的链接 http://programmingexamples.net/wiki/Qt/Delegates/ComboBoxDelegate
现在我的问题是如何检索特定组合框的值。 我认为在 C++ 和 Qt 中将组合框显示到 tableView 中是一件如此复杂的事情。 作为一名网络开发人员,我可以说网络语言更适合做这些事情。
但是性能仍然需要一些时间,我尝试在 C++ 中使用 Qt 来实现,但这并不像在 Web 语言中那样容易。
【讨论】:
【参考方案2】:这是一个非常笼统的问题,如果我试图解释它会占用页面,所以最好阅读 Qt model/view architecture documentation。
您可以创建自己的继承自QTableView
的类来创建您的自定义表格视图。您必须将委托用于下拉功能和所有功能。所以请阅读QItemDelegate
类文档和documentation on subclassing delegates。
【讨论】:
【参考方案3】:如果您想始终显示它而不仅仅是在编辑时显示,我建议为特定列设置一个小部件,如该线程中所述:Qt - QTableView - Clickable button in table row
【讨论】:
以上是关于如何在 QTableView 的列中显示下拉列表并根据下拉列表进行过滤的主要内容,如果未能解决你的问题,请参考以下文章