안녕하세요,QML TableView from
파일에서 tableview를 만드는 데 몇 가지 문제가 있습니다.
는 기본적으로 난 그냥 CSV 파일을로드 할 수있는 버튼이 있고 나는 나는 나의 주된 문제는 내가 열 동적 번호를 가지고 있다고 생각 ... QML있는 TableView이 파일의을 보여주고 싶어요.TableView
{
id: tableView
enabled: dynVars.csvVarTableModel.b_csvEnabled
frameVisible: false
sortIndicatorVisible: false
model: dynVars.csvVarTableModel
resources:
{
var roleList = dynVars.csvVarTableModel.roleStringList
var temp = []
for(var i=0; i<roleList.length; i++)
{
var role = roleList[i]
temp.push(columnComponent.createObject(tableView, { "role": role, "title": role}))}
return temp
}
}
}
columnComponent 내가 QAbstractTableModel과 협력 단순한 TableViewColumn ... 입니다. 그리고 난 지금까지 모든 기본적인 물건을했을 난 다음 funtions를 재 구현 :
public:
int rowCount (const QModelIndex &parent = QModelIndex()) const;
int columnCount (const QModelIndex &parent = QModelIndex()) const;
// QVariant headerData(int section, Qt::Orientation orientation, int role) const;
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
private:
QHash<int, QByteArray> roleNames() const;
는 내가 모든 열을위한 역할을하도록 roleNames 함수를 오버로드했습니다. 즉 내가 문서 ... 데이터
QHash<int,QByteArray> CSVVarTableModel::roleNames() const
{
QHash<int, QByteArray> roles = QAbstractTableModel::roleNames();
for(int i = 0; i < m_v_headers.size();i++)
roles[i + Qt::UserRole] = m_v_headers.at(i).toLatin1();
return roles;
}
() 나는 단순히 m_vv_table.at(index.row()).at(role);
역할이 UserRoles 중 하나 인 경우 을 반환을 .... 이해 방법
이 처음 CSV 파일 I을 위해 잘 작동 테이블에로드 ... 그 후에, anotherfile을로드하려고 할 때 roleNames가 QML에서 업데이트되지 않는 것 같습니다. 이미 문제를 해결하기 위해 여러 가지 조합을 시도했습니다 ... 그 순간에도 좋은 코드 예제가 없기 때문에 그 이유가 있습니다. 모두가 약간 섞여서 ...
완전히 잘못된 방식으로 나는 간단한 파일을로드하는 것이 너무 복잡하다는 것을 상상할 수 없다. 나를 미치게 만든다.
누군가가 힌트 또는 작은 예제를 제공한다면, 동적으로 파일을로드하는 방법은 정말 멋질 것이다. colums의 양.
종류와 관련,
모에
'QAbstractTableView'가 없으므로'QAbstractTableModel'을 의미하는 것 같군요? 'QAbstractItemModel :: roleNames()'는 변경되어서는 안되며, 단지 QAbstractItemModel :: headerData를 구현해야한다는 점에서 테이블 뷰와 함께 표시되는 실제 열 헤더가 아니라 표시 역할을 반환합니다. "헤더 데이터"에 대한 자세한 정보는 설명서를 확인하십시오. – xander
안녕하세요, 고마워요 네가 네 말이 맞다. QAbstractTableModel을 의미한다. mhh 이미 시도했지만, 그걸 기억하면 headerData가 호출되지 않았다. 나는 그 시도를 할 것이다. 내가 뭔가를 간과 했음 – mBucks
QML TableView가 그것을 사용하는지 잘 모르겠지만, 일반적으로 그렇게해야합니다. 열 머리글 이름을 제공하는 올바른 방법이기 때문입니다. 단순한'QAbstractTableModel'만으로'TableView' 만 테스트하고 그것들이 어떻게 작동하는지 보는 작은 새 프로젝트를 만들 수 있습니다. 슬프게도 Qt dev 환경 atm에 대한 액세스 권한이 없습니다. – xander