我有一個接口有兩個QListViews
,其中左側決定什麼是顯示在右: 而QListView selectionModel設置不發送的SelectionChanged信號
到右側更新列表,我有以下功能:
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()
。它不會產生任何錯誤,它只是沒有做任何事情。有人能告訴我爲什麼嗎?
不幸的是,這些似乎都不是原因。我已經交替嘗試currentChanged和selectionChanged,都返回true,但都沒有觸發該函數。 – Magrias