Отображаемый текст заголовка QTreeView

Я пытаюсь отобразить простой список в QTreeView и установить текст отображения заголовка:

+--------+
| Player |
+--------+
| Alice  |
| Bob    |
+--------+

Однако я не могу заставить заголовок отображать что-либо, кроме «1»:

+--------+
| 1      |
+--------+
| Alice  |
| Bob    |
+--------+

Сначала я попробовал QStringListModel, но это не изменило текст заголовка.

from PySide.QtCore import *
from PySide.QtGui import *

model = QStringListModel()
model.setHeaderData(0, Qt.Horizontal, "Player")
model.setStringList(["Alice", "Bob"])

Я обнаружил трудности с заголовком QTableView, поэтому попытался использовать QStandardItemModel вроде предложено, но это по-прежнему приводило к тому, что заголовок отображал только «1»:

from PySide.QtCore import *
from PySide.QtGui import *

model = QStandardItemModel()
model.setHeaderData(0, Qt.Horizontal, "Player")
for player in ["Alice", "Bob"]:
    model.appendRow(QStandardItem(player))

Я бы предпочел не определять свой собственный класс модели, если уже есть класс Qt/PySide по умолчанию, который его предоставляет. Какие-либо предложения?


person All Workers Are Essential    schedule 30.03.2013    source источник


Ответы (1)


Трудно сказать, в чем ваша проблема, потому что информации достаточно, но следующий код C++ работает

QStandardItemModel model;
model.setColumnCount (1);
model.setHeaderData (0, Qt::Horizontal, "Player");
QList<QStandardItem*> row;
row << new QStandardItem("Adam");
model.appendRow (row);
QTreeView view;
view.setModel (&model);

Попробуйте проверить код еще раз.

person AnatolyS    schedule 30.03.2013
comment
Спасибо, model.setColumnCount(1) это то, чего мне не хватало до .setHeaderData(). - person All Workers Are Essential; 30.03.2013