【问题标题】:Is it possible to add a hidden value to every item of qlistWidget是否可以为 qlistWidget 的每个项目添加隐藏值
【发布时间】:2014-08-22 17:00:22
【问题描述】:

是否可以为qlistWidget的每一项添加隐藏值。
我从数据库中获取数据并将其添加到qlistWidget

我想将每一行的id 作为隐藏数据分配给qlistWidget 中的每个项目,以便将来使用它,例如HTML 标记<input type="hidden" name="id" value="15" />

以下是从数据库中获取数据的代码。

QSqlQuery qry;
qry.prepare("SELECT * FROM users");
qry.exec();
while(qry.next()){
     ui->listWidget->addItem(qry.value("username").toString());
}

有可能吗?

【问题讨论】:

标签: c++ qt qt5 hidden-field qlistwidgetitem


【解决方案1】:

使用 setData() 和 data()。示例:

// set data
auto *item = new QListWidgetItem(qry.value("username").toString());
QVariant v;
v.setValue(qry.value("id").toInt());
item->setData(Qt::UserRole, v);
ui->listWidget->addItem(item);

// get back the data
QVariant v = item->data(Qt::UserRole);
int id = v.value<int>();

【讨论】:

【解决方案2】:

创建您自己的继承自 QListWidgetItem 的类,您要隐藏的数据将成为您的类的成员。

【讨论】:

  • 谢谢,但我想要一个快速的方法。
  • 我更喜欢这种方式。因为,setData 在小部件列表项之前添加了一个额外的空白区域。我用 PyQt 经历过这个。我只添加了一个扩展 QListWidgetItem 类的包装类。 class CustomListWidgetItem(QListWidgetItem): def __init__(self, listWidget, identifier): super(CustomListWidgetItem, self).__init__(listWidget) self.id = identifier
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多