QTableWidget :: itemAt()返回看似随机的项目

Jor*_*lne 1 c++ qt qt4 qtablewidget

我刚刚开始使用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());
}
Run Code Online (Sandbox Code Playgroud)

对于1x9的项目,lblCurrentItem显示"9"(应该如此),而lblCurrentCell显示"Quux".难道我做错了什么?

use*_*418 5

Qt文件说:

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

返回该项在等同位置到QPoint(AX,AY)表格部件的坐标系中,或者如果指定的点是否不包括在表中微件的项目返回0.

另见item().

所以,你应该使用项目(行,列),而不是:用户界面 - > lblCurrentCell->的setText(用户界面 - > tableTest->项(电流 - >行(),电流 - >列()) - >文本());

  • itemAt()与item() (2认同)