QtDesigner(4.8.7)を使用して、作成しているQGISプラグインのメインの対話ポイントとなるQDialogを作成しています。ユーザ入力のほとんどは、様々なQLineEditフィールドを介して入力され、そのいくつかはplaceholderText
に設定されています。残念ながら、QDialogが開かれるたびに、QLineEditフィールドが直ちに選択され(すなわち、フォーカスを受け取る)、プレースホルダテキストが消えてユーザがテキストを入力できるようになる。したがって、どのフィールドにも自動的にフォーカスしないQDialogを作成できるかどうかは疑問です。 これは、プラグインのエンドユーザーが値を入力する前にプレースホルダーのテキストを検査できるようにします。QDialogフィールドを自動フォーカスしない
次のように私は現在、QDialogを初期化しています:
import PyQt4.QtGui as QTG
import PyQt4.QtCore as QTC
from dialog_ui import Ui_dialog
class UI (object):
def __init__(self, iface):
# iface is just a way to interact with QGIS
self.iface = iface
self.container = QTG.QDialog()
self.ui = Ui_dialog()
self.setup()
def setup(self):
self.ui.setupUi(self.container)
# Custom ui setup code follows after this...
# Called by an external function
def show(self):
self.container.exec_()
これは最初は機能しますが、ユーザーがいずれかのフィールドを選択すると再び問題が発生します。 – mathsaey
@mathsaey。はい、私は 'setFocus()'を呼び出す代わりのソリューションを提供しました;-) – ekhumoro