Frage

Ich lerne immer noch Qt und verdanke ich der Gemeinschaft SO für mich mit großen, sehr zeitnah Antworten auf meine Qt Fragen bieten. Danke.

Ich bin ganz auf die Idee des Hinzufügens eines Headers zu einem QTableWidget verwirrt. Was ich möchte, ist zu tun, um eine Tabelle, die Informationen über die Teammitglieder enthält. Jeder row für ein Mitglied sollte seine Vor- und Nachnamen enthält, die jeweils in einer eigenen Zelle, eine E-Mail-Adresse in einer Zelle, und Büro in der anderen Zelle. Ich würde eine header über diesen Spalten haben, sie gegebenenfalls zu nennen.

Ich versuche, einfach zu beginnen und erhalten nur die Header-Anzeige „Last“ (wie in Nachnamen). Hier ist mein Code.

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

wird mein Tisch corretly gemacht, aber der Header nicht enthält, was ich erwarten würde. Es enthält 1-Zelle, die den Text "1" enthält.

Ich tue offensichtlich etwas sehr dumm hier, die falsch ist, aber ich bin verloren. Ich halte über die Dokumentation Gießen, nichts zu finden.

Vielen Dank für jede und alle Hilfe.

War es hilfreich?

Lösung 3

Auf Antrag der Person, die mich zu der richtigen Stelle gelenkt, ich bin Entsendung so, wie ich dies als eine Antwort erreicht und ich bin zu akzeptieren.

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

Andere Tipps

Die einfachste Lösung ist setHorizontalHeaderLabels(myListOfHeaderLabels).

Ich sehe ein mögliches Problem, und auch einen einfacheren Weg, dies zu tun.

Zuerst wird das Problem:

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.

Ich glaube, Sie wollen, dass diese stattdessen tun:

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

Nun, desto einfache Art und Weise der Daten für einen Kopfpunkt zu setzen:

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

Für die Nachwelt:

Der Standard implimentations von setHeaderData () und headerdata () in QAbstractItemModel nichts tun. Sie können (sollte?) (Re) impliment headerdata (), um nützlich ein Etikett zurückzukehren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top