如何使用QTable :: editCell()

时间:2011-07-20 05:36:56

标签: qt

我不明白应该如何使用QTable :: editCell()。我正在尝试根据用户在my another question中提到的QTable中所做的条目进行一些错误检查。

我想让用户有机会重新编辑有错误的单元格。例如,如果name列条目有一些特殊字符,如'(',则应提示用户输入错误,控件应在编辑模式下返回相同的单元格。我尝试在代码中使用QTable :: editCell()如下图所示。

Table->editCell(row, 0, TRUE);
name = Table->text(row, 0);

但是,这不能按预期工作。控件根本不会停留在单元格中,显然未正确收集name。所以,我的问题是如何在代码中确保可以编辑QTable的单元格,以便在下一个语句中立即访问编辑的内容(如上面的代码所示)。

注意:我只使用qt 3.3.8。

2 个答案:

答案 0 :(得分:1)

我认为你不能那样做。您将不得不返回事件循环,并等待其中一个信号(如valueChanged(row,col))被触发以重新验证数据。

对GUI对象进行阻塞等待通常不是一种好方法(模态对话框除外)。

答案 1 :(得分:0)

我知道我在这里有点晚了但你应该使用以下的connect语句和你自己的自定义函数来满足你的特定需求,如下所示。您还可以使用此方法禁止用户在自定义函数中输入特殊字符。这样他们就不必纠正不良角色。

connect(ui->tableWidget, SIGNAL(cellChanged(int,int)), this, SLOT(customFunction(int,int)));

void updateTable
{
    //remove invalid characters
}