QTableWidget设置列和获取列

时间:2017-03-13 09:58:29

标签: qt qtablewidget qtablewidgetitem

我试图以编程方式设置我的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部分中,为什么似乎需要多次尝试在行,列中设置值?

0 个答案:

没有答案