gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:00:11 25 4
gpt4 key购买 nike

我刚刚开始使用 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(current->row(), current->column())->text());

关于c++ - QTableWidget::itemAt() 返回看似随机的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2984287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com