Adding QListWidgetItem To QListWidget

Adding QListWidgetItem To QListWidget

本文关键字:QListWidget To QListWidgetItem Adding      更新时间:2023-10-16

所以我有一个类SnapshotPanel:公共QListWidget,我试图动态地添加一个QListWidgetItem,然而,当我尝试我得到一个段错误。我已经验证了我添加项目的代码是正确的,因为我可以在构建SnapshotPanel时添加到列表中。但是,当代码通过信号和插槽调用时,我无法添加到面板,深入了解我所缺少的内容将不胜感激。

下面是构造函数:
SnapshotPanel::SnapshotPanel(QWidget *parent):QListWidget(parent)
{
  this->setViewMode(QListWidget::IconMode);
  this->setIconSize(QSize(256,256));
  this->setResizeMode(QListWidget::Adjust);
  QIcon icon("icon.jpeg");
  QListWidgetItem *widget = new QListWidgetItem(icon,"Earth");
  this->addItem(widget);
}

那么,当通过信号和插槽调用时,是否有任何原因我不能使用以下代码:

{
  QIcon icon("icon.jpeg");
  QListWidgetItem *widget = new QListWidgetItem(icon,"Earth");
  this->addItem(widget);
}

我想它应该可以工作。"Slots是正常的c++函数"根据文档

如果你正在使用多个线程,你需要查看连接机制。也许您需要使用排队连接。您可以将连接语句更改为:

connect(button, &QPushButton::clicked, this, &MainWidget::on_button_clicked);

connect(button, &QPushButton::clicked, this, &MainWidget::on_button_clicked, Qt::QueuedConnection);

但是请阅读这里的官方文档。这里有一个SO问题(基本上是让你回到文档中)。