QtableWidget、QlistWidget、QTreeWidget 單行選中,單擊選中,再單擊取消選中

1.問題描述,QtableWidget、QlistWidget、QTreeWidget 設置單選行模式時,就會一直選中一行,無法取消選中行,恢復全不選的狀態;點擊空白處,也不會取消選中行;多行選擇模式,可以取消選中行;

 

 

2.解決辦法

網上看到一個用多行選中,代替單行選中的方法,就是多行選中變化時,取消其他的選中;保持只有單行選中;

如果是單行選中模式要怎麼處理呢,下面以QTreeWidget爲例來說明;

(1)QtreeWidget屬性設置,單選模式,選中行爲是選中行;

 

 

(2)定義一個當前的選中成員變量保存選中的item;

QTreeWidgetItem* m_pCurrentItem=NULL;

 

(3)QTreeWidgetItem::itemcliecked響應函數,判斷之前選中的是否是同一個item,如果是則取消,如果不是則設置選中;;

connect(ui.treeWidget, &QTreeWidget::itemClicked, [=](QTreeWidgetItem *item, int column) {
        if (m_pCurrentItem ==ui.treeWidget->currentItem())
        {
            ui.treeWidget->setItemSelected(item, false);
            m_pCurrentItem = NULL;
        }
        else
        {
            ui.treeWidget->setItemSelected(item, true);
            m_pCurrentItem = item;
        }
    });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章