簡體   English   中英

使用鍵盤箭頭在QTreeView中選擇項目

[英]Selecting items in a QTreeView with keyboard arrows

我試圖用箭頭鍵在QTreeView中選擇一個項目,但找不到屬於此類的方法,該方法返回突出顯示的項目的索引。 到目前為止,我只能通過單擊鼠標來選擇項目:

connect(m_QTreeView, SIGNAL(clicked(QModelIndex)), this, SLOT(ItemTreeClicked(QModelIndex)));

但是,如果我嘗試使用鍵盤箭頭更改焦點,則當前索引不會更新。 老實說,即使我的“鼠標單擊”版本也不是完美的,因為我曾經使用過一個布爾值,該布爾值初始化為false並在進入插槽ItemTreeClicked時傳遞為true。 我必須這樣做,因為當我嘗試從列表中刪除某項時,如果我還沒有單擊任何東西,我的應用程序就會崩潰。

我在QtCreator 4.7.4上用C ++編寫代碼

任何幫助或示例代碼將不勝感激。

干杯。

也許您可以QTreeView子類並覆蓋keyPressEvent方法,以便它更改當前索引

myqtreeview::keyPressEvent(QKeyEvent* event){

    QModelIndex qmi = this->currentIndex();

    if(event->key() == Qt::Key_Down){
        this->setCurrentIndex(QAbstractItemModel::createIndex(qmi->row()+1, qmi->column()));
    }else{
        ...
    }
    QTreeView::keyPressEvent(event);
}

注意:這只是一個想法,我目前無法對其進行測試,因此如果您想嘗試一下,可能需要稍微調整一下

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM