QComboBox に問題があり、編集テキストを大文字と小文字の異なる既存のアイテムに変更できません。
サンプルコードは以下です。私がやりたいのは、テキストが「One」に変更されるという副作用なしで、「One」という項目が既に含まれているコンボボックスに「one」を入力することです。現在、コンボ ボックスがフォーカスを失うとすぐに「1」に戻ります。
AutoCompletionCaseSensitivity を無効にすると機能しますが、役に立たないという副作用があります (たとえば、「one」の補完を表示しません)。
また、QComboBox の focusOutEvent をオーバーライドして正しいテキストを復元しようとしましたが、コピーと貼り付けなどは機能しません。コンプリータを変更しても、どちらも役に立ちませんでした。
コンボ ボックスがこのように動作するという事実は、私のアプリにとって有害です。誰かがアイデアを持っている場合 (または明らかな何かを見逃した場合) は、お知らせください。
Ubuntu 10.04 で Qt 4.6.2 と PyQt 4.7.2 を使用していますが、4.5 より上の他のディストリビューション/Qt バージョンでこれを経験しています。
感謝と敬意
コード例:
from PyQt4.QtGui import *
from PyQt4.QtCore import SIGNAL, Qt
class Widget(QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
combo = QComboBox()
combo.setEditable(True)
combo.addItems(['One', 'Two', 'Three'])
lineedit = QLineEdit()
layout = QVBoxLayout()
layout.addWidget(combo)
layout.addWidget(lineedit)
self.setLayout(layout)
app = QApplication([])
widget = Widget()
widget.show()
app.exec_()