gpt4 book ai didi

python - 为什么 QLineEdit 小部件在激活其他小部件时会生成 "editingFinished"信号?

转载 作者:行者123 更新时间:2023-12-05 03:07:02 25 4
gpt4 key购买 nike

我试图理解为什么在选择其他小部件时会生成 QLineEdit“editingFinished”信号。在下面的示例中,选择组合框时将调用“on_lineedit”方法。为什么?

ui example

import sys
from PyQt5 import QtWidgets

class MyApp(QtWidgets.QDialog):
def __init__(self, *args):
super().__init__(*args)
# create combobox:
combobox = QtWidgets.QComboBox(self)
combobox.addItems(['Item 1', 'Item 2'])
# create line edit
lineedit = QtWidgets.QLineEdit(self)
lineedit.editingFinished.connect(self.on_lineedit)
# layout:
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget( combobox )
vbox.addWidget( lineedit )
self.setLayout(vbox)

def on_lineedit(self):
print('on_lineedit')

app = QtWidgets.QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())

我知道这个问题可以通过像这样连接“textChanged”信号而不是“editingFinished”信号来避免:

lineedit.textChanged.connect(self.on_lineedit)

而且我在其他地方(下面的链接)看到了类似的问题,但我仍然不明白为什么在选择组合框时会生成“editingFinished”信号。

Qt qspinbox editingFinished signal on value changed

Suppress QLineEdit editingFinished signal when certain button is clicked

最佳答案

来自 http://doc.qt.io/archives/qt-4.8/qlineedit.html#editingFinished

This signal is emitted when the Return or Enter key is pressed or the line edit loses focus.

发出信号是因为它被设计成这样。您点击的另一个小部件在这里并不真正相关,相关的是行编辑失去焦点并且导致信号被发射。点击另一个小部件只是您的行编辑可能失去焦点的多种方式之一。

关于python - 为什么 QLineEdit 小部件在激活其他小部件时会生成 "editingFinished"信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48511685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com