【问题标题】:Set column titles in QColumnView在 QColumnView 中设置列​​标题
【发布时间】:2015-03-10 22:12:54
【问题描述】:

有没有一种简单的方法可以为每列添加列标题?我四处搜索,发现了一些小提示[1],但不是一个有效的例子。我使用 PyQT,但其他示例可能是可移植的。谢谢。

编辑: 我使用扩展 QAbstractItemModel 的自定义模型类,所以我不能在 QStandardItem 上使用任何东西。

[1] 缺少提到的示例:http://qt-project.org/faq/answer/how_can_i_set_headers_for_a_qcolumnview

【问题讨论】:

  • 请出示您的代码。
  • 它在“模型”类中,而不是“视图”类中。您的意思是拥有单独的“模型”类“不容易”?
  • 是的,抱歉,我忘了说我使用了自定义模型类。

标签: qt pyqt


【解决方案1】:

在 C++ 中是:

QStringList columnTitles = QStringList() << "a" << "b" << "c";
for (int i = 0; i < columnTitles.count(); ++i)
    model->setHeaderData(i, Qt::Horizontal, columnTitles.at(i), Qt::DisplayRole);

所以 python 可能是(可能是错误的):

columnTitles = ['a', 'b', 'c']
for i in range(len(columnTitles)):
    model.setHeaderData(i, Qt.Horizontal, columnTitles[i], Qt.DisplayRole)

干杯吧

【讨论】:

  • 抱歉,我忘了说我使用的是自定义模型类,所以,QStandardItemModel 没有可用的东西
  • 是不是至少来源于QAbstractItemModel
  • 并非如此,代码不会抛出错误,但每次调用 setHeaderData() 都会返回 false,并且不显示任何标题。
  • 那我就没主意了;查看一些代码可能会有所帮助
【解决方案2】:

您可以在自定义模型类中覆盖虚拟headerData() 以返回所需的值。

【讨论】:

  • 我已经尝试过使用空方法来检查它是否从视图中调用。不知道为什么,但根本没有调用该方法。
  • @PeterClause 可能是 columnCount() 返回 0?检查调试消息。出了点问题。
  • 不,columnCount() 总是返回 1。
  • @PeterClause 模型/视图派生自哪些类?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 2016-11-08
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
相关资源
最近更新 更多