目前,我正在使用由QLineEdit和组成的自定义小部件QPushButton。用户只能在文本字段中输入0到1000之间的整数。单击按钮后,小部件的自定义clicked信号将在该字段中发出值。
这是代码:
class ResizeWidget(QWidget):
    clicked = pyqtSignal(int)
    def __init__(self):
        super().__init__()
        #NumField and Button
        self.field = QLineEdit()
        self.field.setPlaceholderText("Resize Percentage [0,1000]")
        self.resizeButton = QPushButton("Resize")
        #Layout
        self.lay = QHBoxLayout()
        self.setLayout(self.lay)
        #Add to Widget
        self.lay.addWidget(self.field)
        self.lay.addWidget(self.resizeButton)
        #Field limits
        self.field.setMaxLength(4)
        self.field.setValidator(QIntValidator(0,1000))
        #Connection
        self.resizeButton.clicked.connect(self.onClick)
    @pyqtSlot()
    def onClick(self):
        val = int(self.field.text())
        self.clicked.emit(val)
现在,我想添加到类中的一种方法是允许用户|在文本字段中有时被称为“插入号” 的闪烁光标按下时按下Enter键。
我能够找到鼠标的文档一般,mouseEvent并mousePressEvent作为中的一个方法QWidgets。但是我找不到任何引用文本字段中闪烁的光标的文档。
我想在init()中添加某种伪代码:
if(cursor == inQLineEdit and pressedEnter):
    self.onClick()
我知道QLineEdit::returnPressed在创建正确的函数中起主要作用,但是我只希望Enter键在用户使用ResizeWidget时有效。不是我的GUI的其他部分。我认为回车键不会在整个应用程序中仅绑定到1个小部件,但是我很想找出答案。
只需添加以下行即可:
self.field.returnPressed.connect(self.onClick)
只要插入符号(闪烁的光标)不在文本字段中,按Enter键就不会对我的自定义小部件产生任何反应。