gpt4 book ai didi

c++ - QListView selectionModel 不发送 selectionChanged 信号

转载 作者:行者123 更新时间:2023-11-30 03:38:49 29 4
gpt4 key购买 nike

我有一个包含两个 QListViews 的界面,其中左边决定了右边显示的内容: layout

要更新右侧的列表,我有以下函数:

void CodePlug::handleSelectionChanged()
{
QModelIndex portIndex = ui->listPorts->currentIndex();
QString portItemText = portIndex.data(Qt::DisplayRole).toString();
ui->listPlugs->setModel(ListModelFromMap(plugs[portItemText]));
currentPort = portItemText;
qDebug(currentPort.toStdString().data());
}

它在这里连接到 selectionChanged 信号:

CodePlug::CodePlug(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::CodePlug)
{
ui->setupUi(this);
ui->listPorts->setModel(ListModelFromMap(ports));
QModelIndex portIndex = ui->listPlugs->currentIndex();
QString portItemText = portIndex.data(Qt::DisplayRole).toString();
ui->listPlugs->setModel(ListModelFromMap(plugs[portItemText]));

connect(ui->listPorts->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(handleSelectionChanged()));
}

但是,通过键盘或鼠标更改所选项目永远不会触发 handleSelectionChanged()。它不会产生任何错误,它只是什么都不做。谁能告诉我为什么?

最佳答案

我想通了,这很愚蠢。

当一个新项目被添加到列表中时,我在 listPorts 上调用了 setModel(),这当然会中断连接。我怀疑有更好的方法来处理更改,所以我会尝试修复它,但现在,每次模型更改时我都会重新连接。

关于c++ - QListView selectionModel 不发送 selectionChanged 信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39262284/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com