给定一个QTableWidgetItem,如何设置其column()返回值?

时间:2013-09-14 19:30:45

标签: c++ qt unit-testing

我正在尝试对包含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()的返回值的任何想法?

1 个答案:

答案 0 :(得分: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