В чем разница между currentIndexChanged и currentTextChanged PyQt5

avatar
Allyn Villacorta
9 августа 2021 в 02:37
125
1
0

В чем разница между currentIndexChanged и currentTextChanged PyQt5?

Источник

Ответы (1)

avatar
musicamante
9 августа 2021 в 03:12
1

Документация должна быть достаточно понятной:

currentIndexChanged(index)

Этот сигнал отправляется всякий раз, когда currentIndex в поле со списком изменяется либо посредством взаимодействия с пользователем, либо программно.

currentTextChanged(text)

Этот сигнал отправляется при каждом изменении currentText.

Однако могут потребоваться некоторые пояснения, в основном из-за следующих аспектов:

  1. поле со списком также может быть editable;
  2. может быть несколько элементов с одинаковым текстом;

Это приводит к некоторым важным аспектам, которые необходимо учитывать:

  • в случае, если комбинация доступна для редактирования, текущий индекс не обновляется до тех пор, пока комбинация не потеряет фокус, илипоявится всплывающее окно (с существующим текстом элемента, который соответствует введенному тексту), или нажатием Введите после редактирования;
  • если это не редактируется и несколько элементов имеют один и тот же текст, установка currentText автоматически установит индекс (и текст) для первого элемента, который соответствует этому тексту, который может вызывают срабатывание обоих сигналов всякий раз, когда текущий элемент не является первым вхождением этого текста;
  • поведение currentTextChanged изменяется в зависимости от свойства editable: если оно доступно для редактирования, оно основано на основном сигнале изменения текста QLineEdit, в противном случае оно будет отправлено в любом случае, даже если текст тот же;

Итак, это означает, что:

  • если комбинация не редактируемая, будут испускаться оба сигнала, даже если текст будет одинаковым;
  • если комбинация является редактируемой, редактирование только текста не изменит текущий индекс: нужно нажать Enter или изменить фокус каким-либо образом (даже показывая всплывающее окно), если введенный текст соответствует существующему элементу в модели;
  • если комбинация доступна для редактирования, то фокус смещается и набранный текст не соответствует ни одному элементу, то текущий индекс явно не меняется;
  • изменение текущего индекса вызовет сигнал currentTextChanged только в том случае, если комбинация доступна для редактирования или текст элемента отличается: в противном случае, если новый индекс имеет тот же текст, выдается только сигнал индекса ; это также действует всякий раз, когда элемент выбирается из всплывающего окна;