2009-11-24 3 views
2

저는 여전히 Qt를 배우고 있습니다. 제 Qt 질문에 아주 훌륭하고시기 적절한 답변을 해주신 SO 커뮤니티에 빚을졌습니다. 고맙습니다.Qt의 QTableWidget에 데이터가있는 헤더를 어떻게 추가합니까?

저는 QTableWidget에 헤더를 추가하는 것에 대해 매우 혼란 스럽습니다. 내가하고 싶은 것은 팀 구성원에 대한 정보가 들어있는 테이블을 가지고있는 것입니다. 구성원의 각 행에는 성과 이름, 각자의 셀에있는 이름, 한 셀의 전자 메일 주소 및 다른 셀의 사무실이 있어야합니다. 적절한 이름을 지정하려면이 열 위에 헤더를 넣어야합니다.

나는 쉽게 시작하고 머리글에 "성"과 같이 "성"을 표시하려고합니다. 여기 내 코드가있다.

 
    int column = m_ui->teamTableWidget->columnCount(); 
    m_ui->teamTableWidget->setColumnCount(column+1); 
    QString* qq = new QString("Last"); 
    m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, Qt::Horizontal, QVariant(QVariant::String, &qq)); 

내 표가 정확하게 렌더링되지만 표제에는 내가 기대하는 바가 포함되어 있지 않습니다. 텍스트 "1"을 포함하는 1 개의 셀을 포함합니다.

나는 분명히 여기서 어리석은 뭔가를하고있다.하지만 나는 틀렸다. 나는 아무것도 찾지 못한 채로 문서를 쏟아 부었다. 다음은 마지막 줄에서 작성한 함수 호출에 대한 문서 링크입니다.

http://doc.trolltech.com/4.5/qtableview.html#horizontalHeader http://doc.trolltech.com/4.5/qabstractitemview.html#model http://doc.trolltech.com/4.5/qabstractitemmodel.html#setHeaderData

도움 어떤 모든 주셔서 감사합니다.

+0

문제에 대한 실제 답변이 있다면 대답으로 게시하고 수락해야합니다. –

답변

3

나를 올바른 장소로 인도 한 사람의 요청에 따라이 방법을 게시했습니다. 대답하고 받아 들일 것입니다. 후손을 위해

 
    m_ui->teamTableWidget->setColumnCount(m_ui->teamTableWidget->columnCount()+1); 
    QTableWidgetItem* qtwi = new QTableWidgetItem(QString("Last"),QTableWidgetItem::Type); 
    m_ui->teamTableWidget->setHorizontalHeaderItem(0,qtwi); 
4

가장 쉬운 해결책은 setHorizontalHeaderLabels(myListOfHeaderLabels)입니다.

+0

QTableWidget에 QStandardItemModel *이 아닌 QAbstractItemModel *이 포함되어 있기 때문에 실제로 도움이되지 않습니다. 참조 해제시 model() 호출을 QStandardItemModel *에 캐스팅하거나 segfault 결과를 캐스팅 할 수 없습니다. QTableWidget-> setModel()을 사용하려고하면 setModel()이 private이기 때문에 컴파일 할 수 없습니다. –

+0

사실 저는'QTableWidget :: setHorizontalHeaderLabels'에 링크하려고했습니다. 동일한 메소드 이름, 동일한 기능. –

+0

@ LukášLalinský : 5 년 후 당신을 위해 끊어진 링크를 수정했습니다. ;-) 그러나 나는 당신이 당신의 대답을 링크 전용이 아닌 것으로 확장해야한다고 생각한다. exaple 코드를 제공하는 것은 쉽습니다. – lpapp

5

하나의 잠재적 인 문제와이를 수행하는 더 쉬운 방법이 있습니다.

첫째, 문제 :

QString* qq = new QString("Last"); // <- qq is a pointer to a string. 
m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, 
    Qt::Horizontal, 
    QVariant(QVariant::String, &qq)); // <- You take the address of a pointer, or create a handle. 

내가 대신 이렇게 할 생각 : 이제

QString* qq = new QString("Last"); 
m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, 
    Qt::Horizontal, QVariant(QVariant::String, *qq)); 

, 헤더 항목에 대한 데이터를 설정하는 쉬운 방법 :

m_ui->teamTableWidget->horizontalHeaderItem(0)->setText("Last"); 
+0

감사합니다.질문에 대한 편집을보고 해결 방법을 확인하십시오. 너 도움이 날 잡았어. 다시 한번 감사드립니다. –

2

: QAbstractItemModel에서 setHeaderData()와 headerData()의

기본 implimentations 아무것도하지 않습니다. 유용한 레이블을 반환하기 위해 headerData()를 구현할 수 있습니까?

관련 문제