QTreeWidget;Отключение функций пользовательского интерфейса, когда в QTree выбрано несколько элементов - PullRequest
0 голосов
/ 31 января 2012

Я студент-программист, и я использую Qt для создания GUI для работы, и я столкнулся с проблемой своего рода. В моем основном интерфейсе у меня есть QTreeWidget, который содержит данные. Также в этом графическом интерфейсе у меня есть кнопки «Редактировать, копировать и удалять», которые уже связаны с функциями в перспективе. Я хотел бы, чтобы кнопка редактирования была отключена, когда выбрано несколько элементов. Вот где у меня проблема. Я предполагаю, что лучший способ сделать это (опять же я студент) - это какой-то тип оператора connect, но я просматривал Документацию Qt для этого виджета и не могу найти ничего, что кажется правильным для этот. Я надеялся, что кто-то более опытный сможет дать какое-то руководство в этом.

Мне было интересно, должен ли я / могу использовать

void QTreeWidget::itemSelectionChanged () [signal]

Если бы я мог использовать этот сигнал, пожалуйста, пролите немного света, потому что здесь я пробиваю пробел, поскольку я не знаю, с чего начать связывать его с несколькими выбранными элементами.

Ответы [ 2 ]

1 голос
/ 31 января 2012

Да, это правильный сигнал. Например, вот тривиальная реализация слота для вашего вопроса:

void disableItems() {

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

        //disable the gui items here

    } else { 

        //maybe reenable items otherwise
    }
}
1 голос
/ 31 января 2012

Я не думаю, что вы можете сделать это исключительно в QtDesigner, если это то, что вы пытаетесь сделать.Вы можете определить свой собственный слот для обработки сигнала itemSelectionChanged.В этом слоте вы можете использовать метод selectedItems QTreeWidget, чтобы проверить количество выбранных элементов и включить / отключить кнопки на основе этого.

...