2012-01-30 72 views
0

我是一名學生程序員,我正在使用Qt構建用於工作的GUI,並遇到了各種問題。在我的主界面中,我有一個保存數據的QTreeWidget。同樣在這個GUI中,我有按鈕編輯,複製和刪除已經透視地連接到功能的按鈕。我想在選擇多個項目時禁用編輯按鈕。這是我遇到問題的地方。我認爲最好的辦法做到這一點(我再次是一名學生)將是某種類型的連接聲明,但我一直在尋找通過the Qt Documentation for this widget,並找不到任何似乎是正確的。我希望有更有經驗的人能夠爲此提供一些指導。QTreeWidget;禁用ui在QTree中選擇多個項目時的功能

我想知道我是否應該/可以使用

void QTreeWidget::itemSelectionChanged() [signal] 

如果我可以用這個信號,請提供一些線索,因爲我打一個空白這裏我不知道從哪裏開始就有關到多個項目被選中。

回答

1

是的,這是正確的信號。例如,這裏爲您的問題插槽的簡單實施:

void disableItems() { 

    QList<QTreeWidgetItem*> selection = treeWidget->selectedItems(); 
    if(selection.size() > 1) { 

     //disable the gui items here 

    } else { 

     //maybe reenable items otherwise 
    } 
} 
+0

太棒了!猜猜我剛剛在那裏打了一個作家街區;整個過程中,我一直專注於尋找信號,我真正忽略了創建一個評估函數。謝謝你的幫助! – 2012-01-31 18:24:05

1

我不認爲你可以單獨在QtDesigner中完成,如果這就是你想要做的。 您可以定義您自己的插槽來處理itemSelectionChanged信號。在該插槽中,您可以使用QTreeWidget的selectedItems方法來檢查所選項目的數量並根據該項目啓用/禁用按鈕。