gpt4 book ai didi

qt - 防止在 QScintilla 中触发键盘快捷键(示例代码)

转载 作者:行者123 更新时间:2023-12-04 06:11:32 24 4
gpt4 key购买 nike

我想防止在我的 QScintilla 小部件中编辑代码时触发应用程序键盘快捷键,就像普通的 QLineEdit 字段不会一样。

在下面的可执行示例代码中,不可能在 QScintilla 小部件中键入空格,因为空格键已设置为快捷方式,但在 QLineEdit 中它可以正常工作。

我想知道这是否与 QScintilla 没有正确抓取键盘输入有关(尽管它显然可以,因为可以在其中输入字符)。

import sys,os
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4 import Qsci

class MyWidget(QWidget):
def __init__(self):
QWidget.__init__(self)
self.butt = QPushButton("button!!")
self.act = QAction("new act",self)
self.act.setShortcut(QKeySequence(Qt.Key_Space))
self.act.triggered.connect(tjosan)
self.butt.clicked.connect(self.act.trigger)
self.sci = Qsci.QsciScintilla()
vbox = QVBoxLayout()
vbox.addWidget(self.sci)
vbox.addWidget(QLineEdit())
vbox.addWidget(self.butt)
self.setLayout(vbox)
self.addAction(self.act)

def tjosan():
print "action !!!"

if __name__ == "__main__":
app = QApplication(sys.argv)
widg = MyWidget()
widg.show()
sys.exit(app.exec_())

最佳答案

您需要过滤 ShortcutOverride 事件以获得与 QLineEdit 相同的行为。这是您的示例的编辑版本,演示了一种方法:

import sys,os
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4 import Qsci

class MyWidget(QWidget):
def __init__(self):
QWidget.__init__(self)
self.butt = QPushButton("button!!")
self.act = QAction("new act",self)
self.act.setShortcut(QKeySequence(Qt.Key_Space))
self.act.triggered.connect(tjosan)
self.butt.clicked.connect(self.act.trigger)
self.sci = Qsci.QsciScintilla()
self.sci.installEventFilter(self)
vbox = QVBoxLayout()
vbox.addWidget(self.sci)
vbox.addWidget(QLineEdit())
vbox.addWidget(self.butt)
self.setLayout(vbox)
self.addAction(self.act)

def eventFilter(self, widget, event):
if (event.type() == QEvent.ShortcutOverride and
widget is self.sci):
print 'ShortcutOverride'
event.accept()
return True
return QWidget.eventFilter(self, widget, event)

def tjosan():
print "action !!!"

if __name__ == "__main__":
app = QApplication(sys.argv)
widg = MyWidget()
widg.show()
sys.exit(app.exec_())

关于qt - 防止在 QScintilla 中触发键盘快捷键(示例代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7719806/

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