Frage

Ich habe gerade angefangen, QT zu verwenden, also bitte mit mir. Wenn ich QTableWidget-> getItemat () verwende, gibt es ein anderes Element zurück als, wenn ich CurrentItemchanged verwendet habe und auf das gleiche Element geklickt habe. Ich glaube, es ist notwendig, itemat () zu verwenden, da ich die erste Spalte von jeder Zeile erhalten muss, die geklickt wurde.

Ein Beispielcode ist unten:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QList<QString> rowContents;

    rowContents << "Foo" << "Bar" << "Baz" << "Qux" << "Quux" << "Corge" << "Grault" << "Garply" << "Waldo" << "Fred";

    for(int i =0; i < 10; ++i)
    {
        ui->tableTest->insertRow(i);
        ui->tableTest->setItem(i, 0, new QTableWidgetItem(rowContents[i]));
        ui->tableTest->setItem(i, 1, new QTableWidgetItem(QString::number(i)));
    }
}

//...

void MainWindow::on_tableTest_currentItemChanged(QTableWidgetItem* current, QTableWidgetItem* previous)
{
    ui->lblColumn->setText(QString::number(current->column()));
    ui->lblRow->setText(QString::number(current->row()));
    ui->lblCurrentItem->setText(current->text());
    ui->lblCurrentCell->setText(ui->tableTest->itemAt(current->row(), current->column())->text());
}

Für das Element bei 1x9 zeigt LBLCurrentItem "9" (wie es sollte) angezeigt wird, während lblcurrentCell "Quux" angezeigt wird. Mache ich etwas falsch?

War es hilfreich?

Lösung

QT Documenration sagt:

QtableWidgetItem * qtableWidget :: itemat (int ax, int ay) const

Gibt das Element im Coordinatensystem des Tabellen -Widgets an der Position äquivalent zu QPoint (AX, AY) zurück oder gibt 0 zurück, wenn der angegebene Punkt nicht von einem Element im Tabellen -Widget abgedeckt ist.

Siehe auch item ().

Sie sollten also wahrscheinlich Element (Zeile, Spalte) stattdessen verwenden: Ui-> lblcurrentCell-> setText (Ui-> Tabletest-> item (current-> row (), current-> column ()-> text ());

Andere Tipps

Sieht so aus, als würde Ihr Tisch nach der Spalte 0. ("Foo, Bar, ...") sortiert. Auf diese Weise ist Q'uux um 9 Uhr, bevor Waldo Sinn macht. Fügen Sie entweder die Zahlen in der 0. Spalte ein oder deaktivieren Sie die Sortierung oder ich denke, Sie haben den Punkt bekommen. Es gibt viele Lösungen.

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