0

我正在尝试对一些包含关于 QTableWidgetItem::column() 值的 if 语句的 C++ Qt 代码进行单元测试,如下所示:

void on_resultsTable_currentItemChanged(QTableWidgetItem* currentItem, QTableWidgetItem* previousItem)
{
    if (currentItem != nullptr)
    {
        int column = currentItem->column();
        if (column == 0)
        {
            // Column0SpecificBehavior();
        }
    }
}

为了在 column() == 0 和 column() != 0 的测试用例中测试此函数,我需要创建两个 QTableWidgetItem 实例,一个带有 column() 0,一个带有 column() 1。

我已尝试将此作为使 QTableWidgetItem::column() 返回 0 而不是其默认值 -1 的一种可能方法:

QTableWidget table;
table.insertRow(0);
QTableWidgetItem currentItem("Row0Column0");
table.setItem(0, 0, &currentItem);

但是上面的代码导致 currentItem 的 column() 仍然返回 -1。

关于如何设置 QTableWidgetItem::column() 的返回值的任何想法?

4

1 回答 1

1

我想你忘了在你的表中插入一列。您的代码应如下所示:

QTableWidget table;
table.insertRow(0);
table.insertColumn(0); <--- missing line
QTableWidgetItem currentItem("Row0Column0");
table.setItem(0, 0, &currentItem);

QTableWidgetItem *it = table.currentItem();
int column = it->column(); <--- this is the current column == 0
于 2013-09-14T20:22:16.797 回答