我想使用public function behaviors()
{
return [
[
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'create_time',
'updatedAtAttribute' => 'update_time',
//'value' => new Expression('NOW()'),
],
];
}
创建一个列表,我可以自动添加和删除项目,而无需用户与图形界面交互。我完成了这项工作,但在创建项目时,我无法更新/修改项目中的文本。我创建了四个这样的项目:
QWidgetList
我已经看到我可以修改这样的文字:
for (int i = 0; i < 4; i++)
{
QListWidgetItem *lwi = new QListWidgetItem();
lwi->setSizeHint(QSize(200, 20));
lwi->setTextAlignment(Qt::AlignCenter);
lwi->setText(QString("Obstacle ") + QString::number(i));
ui_.list->addItem(lwi);
}
ui_.list->item(0)->setText(QString::number(updateItem, 'f', 2));
不断改变其价值的地方。
问题在于,虽然文本已被修改,但只有在我与窗口交互时才会在屏幕上更新。
有没有办法直接更新它而无需互动?例如,如果我对Label执行相同操作,则它可以正常工作,并且Label会不断更改其文本,而无需与其进行交互。
我正在使用ROS的rqt库,开发一个用Qt创建的插件。虽然我相信我的问题与Qt直接相关而不是ROS。
谢谢。
EDIT1:我添加了updateitem
,但不适合我。
ui_.list_movil->update()
我只添加了四个项目,之后我尝试修改它们。它对我不起作用,因为我必须单击一个项目才能看到更改的文本。如果我做得对,也许它应该是rqt library的错误。
顺便说一下,我正在修改这样的标签:
void MyPlugin::update_list()
{
if (flagFirstItem == false)
{
for (int i = 0; i < 4; i++)
{
QListWidgetItem *lwi = new QListWidgetItem();
lwi->setSizeHint(QSize(200, 20));
lwi->setTextAlignment(Qt::AlignCenter);
lwi->setText(QString("Obstacle ") + QString::number(i));
ui_.list_movil->addItem(lwi);
}
flagFirstItem = true;
}
if (flagFirstItem == true)
{
for (int i = 0; i < ui_.list_movil->count(); ++i)
{
ui_.list_movil->item(i)->setText(QString::number(updateItem, 'f', 2));
ui_.list_movil->update();
}
}
}
他们都工作正常,我不需要点击它们来查看更改的文本。