我不明白应该如何使用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。
答案 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
}