我试图以编程方式设置我的QTableWidget的某些值,但它似乎无法正常工作。 在我的主要线程中,我使用(PRIMARY_SET):
设置表Status="N";
Number = QString::number(x);
Name= "abc;
nrow=i;
QTableWidgetItem *item_Number = new QTableWidgetItem(Number);
QTableWidgetItem *item_Name = new QTableWidgetItem(Name);
QTableWidgetItem *item_Status = new QTableWidgetItem(Status);
QTableWidgetItem *icon_item = new QTableWidgetItem;
QIcon icon("path/to/.png");
icon_item->setIcon(icon);
ui->TabKeyAlarm_TableED->setItem(nrow, 0, item_Number);
ui->TabKeyAlarm_TableED->repaint();
ui->TabKeyAlarm->repaint();
ui->centralWidget->repaint();
ui->TabKeyAlarm_TableED->setItem(nrow, 1, icon_item);
ui->TabKeyAlarm_TableED->repaint();
ui->TabKeyAlarm->repaint();
ui->centralWidget->repaint();
ui->TabKeyAlarm_TableED->setItem(nrow, 2, item_Name);
ui->TabKeyAlarm->repaint();
ui->centralWidget->repaint();
ui->TabKeyAlarm_TableED->setItem(nrow, 3, item_Status);
ui->TabKeyAlarm_TableED->repaint();
ui->TabKeyAlarm->repaint();
ui->centralWidget->repaint();
表示n行并且有效。
之后我要做的就是更改图标和"状态"如果事件发生在特定行上。 这是我在一个单独的线程中的控制,它不起作用(CHECK):
QTableWidgetItem *_getItem = ui->TabKeyAlarm_TableED->item(n_MOD,3);
if (_getItem)
if (_getItem->text() != "K")
{
QEvent(QEvent::Type(QEvent::User+5)));
}
它不断调用User+5
事件。如何检查行n_MOD
和第3列中的_getItem是否已经" K"文字集?结果总是_getItem->text()
"没有这样的值" ...
然后,这是User+5
事件(SECOND_SET)的代码:
QString _Status_check="";
Status="K";
QTableWidgetItem *icon_item = new QTableWidgetItem;
QTableWidgetItem *item_Status = new QTableWidgetItem(Status);
while (_Status_check != "K")
{
QIcon icon("path/to/.png");
icon_item->setIcon(icon);
ui->TabKeyAlarm_TableED->setItem(n_MOD, 1, icon_item);
ui->TabKeyAlarm_TableED->setItem(n_MOD, 3, item_Status);
_Status_check = ui->TabKeyAlarm_TableED->item(n_MOD,3)->text();
我必须使用"而#34;,因为否则大多数时候_Status_check确认我行n_MOD第3列中的文字仍然是旧文本...
所以我的问题是:
1)在CHECK部分,我如何检查元素是否已经具有值" K" ?
2)在SECOND_SET部分中,为什么似乎需要多次尝试在行,列中设置值?