Domanda

Sto ancora imparando Qt e io sono in debito con la comunità SO per avermi fornito grandi, risposte molto tempestive alle mie domande Qt. Grazie.

Sono abbastanza confusa l'idea di aggiungere un colpo di testa ad un QTableWidget. Quello che mi piacerebbe fare è avere una tabella che contiene informazioni sui membri del team. Ogni row per un membro dovrebbe contenere il suo nome e cognome, ciascuno nel proprio cellulare, un indirizzo email in una cella, e l'ufficio nell'altra cella. Mi piacerebbe avere un header sopra queste colonne nominarli a seconda dei casi.

sto cercando di iniziare facile e ottenere solo l'intestazione per visualizzare "Last" (come nel cognome). Qui è il mio codice.

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));

Il mio tavolo viene reso corretly, ma il colpo di testa non contiene quello che mi aspetterei. Contiene 1 cella che contiene il testo "1".

Sono ovviamente facendo qualcosa di molto stupido qui che è sbagliato, ma mi sono perso. Io continuo a versare sopra la documentazione, non trovando nulla.

Grazie per qualsiasi aiuto.

È stato utile?

Soluzione 3

Su richiesta della persona che mi ha guidato verso il luogo giusto, sto inviando il modo in cui ho realizzato questo come una risposta e sto accettarla.

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

Altri suggerimenti

La soluzione più semplice è setHorizontalHeaderLabels(myListOfHeaderLabels).

Vedo un problema potenziale, e anche un modo più semplice per fare questo.

In primo luogo, il problema:

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.

Credo che si vuole fare questo, invece:

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

Ora, il modo più semplice per impostare i dati per una voce di intestazione:

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

Ai posteri:

I implimentations di default di setHeaderData () e headerData () in QAbstractItemModel non fanno nulla. È possibile (dovrebbe?) (Ri) impliment headerData () per ritornare utile un'etichetta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top