添加 QListWidgetItem 到 QListWidget

Adding QListWidgetItem To QListWidget

所以我有一个 class SnapshotPanel : public 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 are normal C++ functions" 根据 the documentation.

如果您使用多线程,则需要查看连接机制。也许您需要使用排队连接。您将从以下位置更改连接语句:

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

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

但阅读official documentation here. A SO question (basically pointing you back to the documentation) is here