1

所以我有一个类 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);
}
4

1 回答 1

0

我认为它应该工作。根据文档,“插槽是普通的 C++ 函数” 。

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

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

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

但请阅读此处的官方文档。一个 SO 问题(基本上将您指向文档)在这里

于 2015-09-25T06:45:20.140 回答