C++ QML TableView未调用QAbstractTableModel headerData()-函数
我目前正在使用QML/QtQuick TableView。数据显示->很好。我目前唯一无法工作的是标题:就我理解QT模型概念而言,TabLVIEW应该自动调用C++ <代码> QuasCuTababl::Head数据(int切片,QT::取向,INTION)< /C>函数。但是,当我添加一个C++ QML TableView未调用QAbstractTableModel headerData()-函数,c++,qt,qml,qtquick2,C++,Qt,Qml,Qtquick2,我目前正在使用QML/QtQuick TableView。数据显示->很好。我目前唯一无法工作的是标题:就我理解QT模型概念而言,TabLVIEW应该自动调用C++ QuasCuTababl::Head数据(int切片,QT::取向,INTION)< /C>函数。但是,当我添加一个qDebug()时,您能给我们看一下您的代码吗?现在添加了一些代码摘录。希望它们能有所帮助。@mozzbozz您是否尝试过使用以下方法设置数据:setHeaderData(int-section,Qt::Orient
qDebug()时,您能给我们看一下您的代码吗?现在添加了一些代码摘录。希望它们能有所帮助。@mozzbozz您是否尝试过使用以下方法设置数据:setHeaderData(int-section,Qt::Orientation,const-QVariant&value,int-role=Qt::EditRole)
?@Chernobyl:没有,因为我认为只有在有可编辑模型的情况下才能实现该功能。然而,我的是静态的,只在开始时初始化一次。但是headerData()函数仍然应该被Qt调用,不是吗?您找到解决方案了吗?我正在尝试使用QML+PyQt编写一个类似的东西,它带有一个TableView
和一个自定义模型(一个QAbstractTableModel
,显示关于正则表达式匹配的信息)。QML似乎调用的唯一方法是rowCount
,它可以找到,所有其他方法都没有调用,我也不知道为什么。。。
QVariant myModel::headerData(int section, Qt::Orientation orientation, int role) const
{
qDebug() << "Hello World!";
}
[... I left out the implementation of the other functions
here as they work as expected ...]
#ifndef MYMODEL_H
#define MYMODEL_H
#include <QAbstractTableModel>
#include "inputvectors.h"
class MyModel : public QAbstractTableModel
{
Q_OBJECT
public:
MyModel (QObject *parent = 0);
// InputVectors is just another class I use but it basically
// contains two `QList`s
MyModel (InputVectors *inputData, QObject *parent=0);
int rowCount(const QModelIndex &parent) const;
int columnCount(const QModelIndex &parent) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
protected:
QHash<int, QByteArray> roleNames() const;
private:
InputVectors *inputData;
};
#endif // MYMODEL_H
[...]
TableView {
id: myTableView
anchors.fill: parent
frameVisible: false
model: controller.getInputVectorsModel()
TableViewColumn {
role: "row_line_numbers"
width: 40
delegate: Item {
Text { text: styleData.value; anchors.left:parent.left;anchors.leftMargin: 12}
}
}
}
[...]