Domanda

Ho appena iniziato a utilizzare Qt, così si prega di portare con me. Quando uso QTableWidget-> getItemAt (), restituisce un elemento diverso da se ho usato currentItemChanged e cliccato lo stesso articolo. Credo che sia necessario utilizzare itemAt () in quanto ho bisogno di ottenere la prima colonna di qualsiasi riga è stata cliccato.

Qualche esempio di codice è qui sotto:

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

Per l'oggetto a 1x9, visualizza lblCurrentItem "9" (come dovrebbe,) mentre visualizza lblCurrentCell "Quux". Sto facendo qualcosa di sbagliato?

È stato utile?

Soluzione

Qt documenration dice:

* QTableWidgetItem QTableWidget :: itemAt (int ax, ay int) const

Restituisce la voce nella posizione equivalente a QPoint (ax, ay) nella tabella widget di di sistema di coordinate, o ritorna 0 se il punto specificato non è coperto da una voce nel widget tavolo.

Vedere anche il punto ().

Quindi, si dovrebbe probabilmente usare item (riga, colonna) invece: UI-> lblCurrentCell-> setText (UI-> tableTest-> item (current-> fila (), current-> colonna ()) -> testo ());

Altri suggerimenti

Sembra che il tuo tavolo è sempre ordinata come da 0a colonna ( "Foo, Bar, ..."). In questo modo 'Q'uux essere a 9, prima di Waldo ha un senso. O inserire i numeri in colonna 0 o disabilitare l'ordinamento o Penso che avete ottenuto il punto. Ci sono molte soluzioni.

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