QStackedWidget 似乎在启动或切换页面时聚焦并选择第一个子小部件的内容。
这是我启动程序时得到的结果(时间编辑小部件已聚焦并选择了第一个数字:
我通过使用
currentChanged
事件将焦点设置为其他一些不可编辑的小部件来删除焦点。
有没有更好的方法来解决这个问题?
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget)
self.stackedWidget.setGeometry(QtCore.QRect(110, 160, 351, 231))
self.page_1 = QtWidgets.QWidget()
self.timeEdit = QtWidgets.QTimeEdit(self.page_1)
self.timeEdit.setGeometry(QtCore.QRect(50, 40, 118, 22))
self.stackedWidget.addWidget(self.page_1)
self.page_2 = QtWidgets.QWidget()
self.stackedWidget.addWidget(self.page_2)
MainWindow.setCentralWidget(self.centralwidget)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
# my workaround for removing focus - set focus to the parent window on startup/page change.
MainWindow.setFocus()
self.stackedWidget.currentChanged.connect(self.onPageChange)
def onPageChange(self, index):
MainWindow.setFocus()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
我有同样的行为,并修复了使用
QApplication.focusWidget().clearFocus()
我改变页面后