我试图在QML中显示一个带有Qt控件TableView的TableView子类。
模型类如下所示:
class CommandModel : public QStandardItemModel {
Q_OBJECT
public:
CommandModel(QObject *parent = 0);
private slots:
void startProcess();
// and other thing that only fetch data and use appendRow()
// to add the data to the model.
};该模型目前是一个由两列组成的表(命令名及其描述)。
我使用QQmlApplicationEngine和QQuickWindow来显示QML。
QML代码如下:
TableView {
id: tableview
model: commandModel
TableViewColumn {
title: qsTr("Command")
role: "name"
}
TableViewColumn {
title: qsTr("Description")
role: "description"
}
}显示TableView,显示行(如果我没有弄错,有正确的行数),但它们只是空白行。
模型在完成加载之前被传递给QML上下文。我不认为这是个问题,因为我第一次看到一个空表,然后看到一个空行的表。
我不知道如何定义哪一列对应于哪个角色。
任何帮助都会受到欢迎和感谢。
编辑:代码可以在这里找到:https://github.com/martinqt/Symfony2Helper
EDIT2:通过重新实现roleNames,我得到了一个随机工作的第一篇专栏(或者因为它是随机奇怪的)。
EDIT2.1:实际上,显示第一列的诀窍是setItemRoleNames()。
EDIT3:问题更像是this。我要试着看看能不能解决这个问题。
解决方案:this解决了整个问题。实现data()和roleNames()。(如果你不想使用枚举的话)。
发布于 2014-05-06 19:27:19
看看您的代码,问题来自以下几行:
roles[0] = "name";
roles[0] = "desc";如您所见,您首先将" name“设置为角色0,然后用"desc”名称覆盖该值。尝试更改它,以便它们有不同的索引。
roles[0] = "name";
roles[1] = "desc";您现在应该使用这个名称了。第二个问题来自这样一个事实:您正在注册"desc“角色,但是在qml中使用"description”角色。因此,可以修改c++或qml中的角色名,以便它们匹配。
roles[0] = "name";
roles[1] = "description";https://stackoverflow.com/questions/23475851
复制相似问题