QListViewからエントリを選択したときにのみユーザが進むことができるウィザードがあります。それを確認するために、私はcurrentChanged
信号への検証ロジックを含む私の方法を接続しているが、選択されたインデックスが無効な場合、信号が放出されていません。Qt setCurrentIndexは、無効なModelIndexに対してcurrentChangedを発行しません。
// It's connected like this
connect(connectionsListView->selectionModel(),
SIGNAL(currentChanged(QModelIndex,QModelIndex)),
this, SLOT(connectionSelected(QModelIndex)));
// Does not emit for empty ListModel
connectionsListView->selectionModel()->setCurrentIndex
(connectionListModel->index(0, 0), QItemSelectionModel::SelectCurrent);
// Does not emit whatsoever
connectionsListView->selectionModel()->clear();
// Valid selections are delegated to my validation logic and handled correctly
これがなぜ起こるかと私は修正するために何ができるかを任意のアイデアそれ?現在、私はインデックスが無効になることがありますが、私のコードで発行する2番目の信号を持っていますが、インデックスが無効であればQtが単にシグナルを放射することをお勧めします。
ユーザが選択できない項目がある場合は、Qt :: ItemIsSelectableフラグを使用して項目を選択できます。 –
モデルが空のときに(変更されていないので) 'currentChanged'シグナルが放出されなければ、私は驚くことはありません。空でないモデルでは、私は[MCVE here](http://pastebin.com/3RgGdkic)と書いていますが、期待通りに両方の操作で信号が私のために放出されます(ここでQt 5.7)。 – Mike