添加 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。
所以我有一个 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。