我使用PyQt4和Python 2.7.9。自動專注於顯示刪除QLineEdit的佔位符文本
我的程序包含幾個QLineEdit
對象。問題是當程序啓動時,其中一個QLineEdits
被自動聚焦,這導致我的佔位符文本消失。
有什麼辦法可以防止它,或者至少不要讓它隱藏佔位符文本?
我使用PyQt4和Python 2.7.9。自動專注於顯示刪除QLineEdit的佔位符文本
我的程序包含幾個QLineEdit
對象。問題是當程序啓動時,其中一個QLineEdits
被自動聚焦,這導致我的佔位符文本消失。
有什麼辦法可以防止它,或者至少不要讓它隱藏佔位符文本?
您可以使用setFocus把重點放在不同的控件(雖然,這取決於小部件你選擇,你可能還需要設置focus-policy在前):
self.some_other_widget.setFocusPolicy(QtCore.Qt.TabFocus)
self.some_other_widget.setFocus()
另外,如果你使用Qt創建GUI的設計器,您可以使用edit the tab-order,以便線條編輯不是鏈中的第一個。這也可以使用QWidget.setTabOrder以編程方式完成。
另一種方式是
self.this_widget.clearFocus()
已經顯示窗口之後。只有在Qt5佔位符文本中才會顯示焦點。所以也許切換到PyQt5。
加上一個用於'clearFocus'和Qt5中不同的焦點行爲。然而,我不明白爲什麼你認爲'text()'應該返回佔位符文本:它不會在Qt-5.4中做到這一點,如果它確實是一個討厭的錯誤。但無論如何,在極少數情況下,您可能需要這種行爲,您可以輕鬆地執行'text = widget.text()或widget.placeholderText()'。 – ekhumoro
@ekhumoro感謝您的評論。我想我在這裏用text()的行爲犯了一個錯誤。這是我記得的,但顯然是錯誤的。我更喜歡這種行爲,因爲我喜歡佔位符作爲默認的形式,而你的'text()或placeholderText()'優雅地解決了它。你的Qt知識非常出色。在過去的幾天裏,我不得不經常加註它。 ;) – Trilarion
順便說一句,Qt5保留佔位符文本即使焦點也很不幸。我從過去幾年中看到的每一個用戶界面設計指南都很明顯,在關注焦點時,提示應該消失,很容易認爲框中有價值,或者框是隻讀的。 – Schollii
謝謝!我使用Qt Designer創建了GUI,所以我更改了Tab鍵順序,並且按預期工作。 – ohad987