QAbstractTableModelのサブクラス(QSortFilterProxyModelを介して)にQTreeView(databaseTreeView
)を含むウィンドウがあります。 ui->databaseTreeView->model()->insertRow(ui->databaseTreeView->model()->rowCount());
を呼び出す[追加]ボタンがあります。 私はまた、エディタウィンドウにインデックスを渡すためにui->databaseTreeView->selectionModel()->currentIndex();
を使用する[編集]ボタンを持っています。Qt4のモデルにアイテムを追加し、新しく追加されたアイテムのインデックスを取得する方法
[Add]ボタンをクリックすると、新しく作成された項目のインデックスが自動的に表示されますが、モデルがソートされると、行を挿入した行番号は使用できません。 Plus insertRows()
はboolを返すだけです(私の状況ではインデックスがもっと便利なので、誰かが新しく追加したアイテムのインデックスを取得する方法を教えてくれないかと思います)。
代替案がない場合はリファクタリングを2〜3時間捧げたいと思いますが、それはかなりシンプルであるはずです。私はQAbstractItemModel::rowsInserted
シグナルで慎重に探していますが、ちょうど追加された項目であるかどうかにかかわらず、私がinsertRows()
に与えた行を返し、リストの最後の項目を編集します。
完全な情報源は、https://github.com/megamasha/FlashKardで詳しく見ることができます。
引用してくれてありがとう、それは別のインデックスからの変換の問題ではない - それは最初の場所でインデックスを持っていないの問題です。 いずれにせよ、私は解決策を見つけました。 'addRows()'関数から送られた自分自身のシグナルを実装し、それをスロットに接続しました。このスロットは編集のためにそのカードを開きます。 –