0

だから私は私のプログラムで QTermWidget にシミュレートされたリターンキーを送信しようとしています。Python /Qt4 と C++/Qt4 の両方で、これの作業バージョンがあります。この時点で、C++ の構文を十分に理解しているので、どちらの言語で記述されていてもかまいません。そうは言っても、どちらの言語に対する答えも天の恵みです。

これまで私は試しました

   QTest.KeyClick(self.Terminal, Qt.KeyReturn, Qt.NoModifier) // syntax is python here

    key_press = QKeyEvent(QEvent.KeyPress, Qt.Key_Return, Qt.NoModifier)
    self.Terminal.keyPressEvent(key_press)
    key_release = QKeyEvent(QEvent.KeyRelease, Qt.Key_Return, Qt.NoModifier)
    self.Terminal.keyPressEvent(key_release)

そして、今は完全には思い出せない他のいくつか。

助けてくれてありがとう。

4

2 に答える 2

0

これは私にとってはうまくいきます。他のウィジェットでも動作するはずです。

import sys
from PyQt4 import QtCore, QtGui, Qt
from ChildWindow import ChildWindow

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        QtCore.QTimer.singleShot(500, self.showChildWindow)
        self.textEdit = QtGui.QTextEdit(self)
        self.textEdit.resize(100, 100)

    def showChildWindow(self):
        QtGui.QApplication.sendEvent(self.textEdit, QtGui.QKeyEvent(QtGui.QKeyEvent.KeyPress, QtCore.Qt.Key_A, QtCore.Qt.NoModifier, "hello"))
        QtGui.QApplication.sendEvent(self.textEdit, QtGui.QKeyEvent(QtGui.QKeyEvent.KeyPress, QtCore.Qt.Key_Return, QtCore.Qt.NoModifier))


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = MainWindow()
    myapp.show()
    sys.exit(app.exec_())
于 2013-02-07T18:25:19.713 に答える
0

C++でこれを試しましたか?

QKeyEvent *ev = new QKeyEvent( QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier );
myApp->postEvent( receivingWidget, ev );
于 2013-02-07T16:18:51.657 に答える