我刚刚开始使用 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”。难道我做错了什么?
Qt文档说:
QTableWidgetItem * QTableWidget::itemAt ( int ax, int ay ) const
返回表格小部件坐标系中相当于 QPoint(ax, ay) 的位置处的项目,或者如果指定点未被表格小部件中的项目覆盖,则返回 0。
另请参见 item()。
所以你可能应该使用 item(row, column) 代替:
ui->lblCurrentCell->setText(ui->tableTest->item(当前->行(),当前->列())->文本());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)