Wie kann ich einen Header mit Daten zu einem QTableWidget in Qt hinzufügen?
-
22-09-2019 - |
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.
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.