Я пытаюсь обновить QLineEdit
, когда я вращаю колесико мыши и одновременно нажимаю цифру на клавиатуре. К сожалению, я не вижу события колеса мыши для виджета QLineEdit
, поэтому я не понимаю, как я могу установить сигнал для каждого QLineEdit
. Другая проблема, с которой я столкнулся, заключается в том, что QLineEdit
уже находятся в среде полосы прокрутки, я не могу обнаружить событие с полным колесом, потому что сначала выполняется прокрутка.
Например, с этим кодом:
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
class SurfViewer(QMainWindow):
def __init__(self, parent=None):
super(SurfViewer, self).__init__()
self.parent = parent
self.centralTabs= QTabWidget()
self.setCentralWidget(self.centralTabs)
self.setFixedWidth(200)
self.setFixedHeight(200)
#tab Model selection
self.tab_ModelSelect = QWidget()
self.centralTabs.addTab(self.tab_ModelSelect,"Label")
self.groupscrolllayouttest = QHBoxLayout() ####
self.groupscrollbartest = QGroupBox() ####
self.mainHBOX_param_scene = QVBoxLayout()
for i in range(10):
LineEdit = QLineEdit(str(i))
LineEdit.setFixedWidth(200)
self.mainHBOX_param_scene.addWidget(LineEdit)
self.installEventFilter(self)
scroll = QScrollArea()
widget = QWidget(self)
widget.setLayout(QVBoxLayout())
widget.layout().addWidget(self.groupscrollbartest)
scroll.setWidget(widget)
scroll.setWidgetResizable(True)
self.groupscrollbartest.setLayout(self.mainHBOX_param_scene)
self.groupscrolllayouttest.addWidget(scroll)
self.tab_ModelSelect.setLayout(self.groupscrolllayouttest)
def eventFilter(self, widget, event):
if (event.type() == QEvent.Wheel) :
# get which key is pressed
# if the key is a number, put the number in 'num' variable
# get on which QLineEdit the wheel was make
# set the text of that QLineEdit to previous value +- num
event.ignore()
return QWidget.eventFilter(self, widget, event)
def main():
app = QApplication(sys.argv)
ex = SurfViewer(app)
ex.setWindowTitle('window')
# ex.showMaximized()
ex.show()
sys.exit(app.exec_( ))
if __name__ == '__main__':
main()
Я пытался что-то сделать с wheelevent
, но, как уже упоминалось, я не вхожу в эту функцию, потому что сначала активируется полоса прокрутки. Я пытался проверить, произошло ли событие с колесом на QLineEdit
, но мне даже трудно это сделать ...
То, что я пытаюсь сделать, - это когда я выполняю событие с указателем мыши на QlineEdit
с нажатой клавишей «5», я хочу увеличить или уменьшить текст QLineEdit
на 5 в соответствии с направлением колеса мыши.
Я красил сообщение с eventfilter
(как Как получить событие щелчка для QLineEdit в Qt?), но я не понимаю, как это работает.
В моей функции eventFilter
мне нужно сделать несколько шагов:
# get which key is pressed
# if the key is a number, put the number in 'num' variable
# get on which QLineEdit the wheel was make
# set the text of that QLineEdit to previous value +- num
но я не знаю, как их сделать. В частности, получение нажатой клавиши и знание того, на каком QlineEdit было создано колесо.