【问题标题】:How to assign a specific number to QListWidget so that it can be modified later?如何为 QListWidget 分配一个特定的数字,以便以后可以修改它?
【发布时间】:2018-11-17 06:27:16
【问题描述】:

有没有办法将特定的int 编号分配给QListWidget 项目?

我创建了很多我设计的 widget 类的实例,方法是每次都执行以下操作并通过将它们作为参数传递来设置一些数据

MyWidgetClass *object = new MyWidgetClass(this);
object->setData(data_1,data_2,.....,data_n);

然后我在QListWidgetItem 的帮助下将此小部件设置为ui 的qListWidget

QListWidgetItem *listWidgetItem = new QListWidgetItem(ui->qListWidget);
ui->qListWidget->addItem(listWidgetItem);
listWidgetItem->setSizeHint(object->sizeHint());
ui->qListWidget->setItemWidget (listWidgetItem, object);

稍后根据接收到的信号,必须自动修改已传递的数据。所以,我想,如果给QListWidget的每一项分配了特定的编号,那么它可以随时自动修改。

任何帮助或建议将不胜感激。提前致谢。

【问题讨论】:

  • 如果我很好理解你的问题,你必须使用 QSignalMapper。 Qt 文档说:“QSignalMapper 类捆绑来自可识别发送者的信号。此类收集一组无参数信号,并使用与发送信号的对象相对应的整数、字符串或小部件参数重新发出它们。”

标签: c++ qt qtgui


【解决方案1】:

您可以执行以下操作将自定义数据存储在列表小部件项中:

int identifier = 111;
QListWidgetItem *listWidgetItem = new QListWidgetItem(ui->qListWidget);
listWidgetItem->setData(Qt::UserRole, identifier);

然后将其取回:

int identifier = listWidgetItem->data(Qt::UserRole).toInt();

【讨论】:

  • 如何将这个“int”数字与 QListWidget 实例关联起来?
  • 你可以发明你的索引。
  • QListWidgetItem 对象已在函数内声明。一旦函数执行完成,就不能再在代码中使用 QListWidgetItem 的对象了。所以给 QListWidget 动态对象分配一个数字更有帮助。但是如何分配或者以后如何使用来追踪呢?
  • 好吧,但是您可以稍后在另一个函数中使用 QListWidget::item()QListWidget::itemAt()QListWidget::currentItem() 函数获得相同的项目。一旦获得指向该项目的指针,您就可以获得分配给它的标识符。
猜你喜欢
  • 2021-07-25
  • 2017-02-11
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多