Я только начал использовать Qt, поэтому, пожалуйста, потерпите меня. Когда я использую QTableWidget-> getItemAt (), он возвращает другой элемент, если бы я использовал currentItemChanged и щелкнул тот же элемент. Я считаю, что необходимо использовать itemAt (), поскольку мне нужно получить первый столбец любой строки, по которой щелкнули.
Ниже приведен пример кода:
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());
}
Для элемента размером 1x9 lblCurrentItem отображает «9» (как и должно быть), тогда как lblCurrentCell отображает «Quux». Я что-то не так делаю?