QtableWidgetにフォーム(インポートフォーム)が設定されています。各フォームは、基本的に、カップルプッシュボタンとスピンボックスを含むQgroupboxです。私は、矢印キーをグループボックス間を移動するために使用できるように、これらをテーブルに配置することを選択しました。しかし、私は各プッシュボタンがキーボードショートカットを介してチェック可能で、スピンボックスがある種のキーボードショートカット(おそらくシフト+矢印)で調整されるようにしたい。私はナビゲーションがほとんど機能していますが、プッシュボタンに割り当てたショートカットは機能しません。そのグループボックス内のターゲットウィジェットにフォーカスを当てているグループボックスからショートカットを「渡す」方法が必要なようです。スピンボックスの調整に関する第2の問題は関連しているようですが、これを設定する方法についてはあまり明確ではありません。pyqt5ショートカットを子ウィジェットに接続する方法
フォームのほとんどのコード(QTCtreatorで生成)を添付しました。ショートカットコードが再変換メソッドにあるのは面白いことです。フォームまあ
class Ui_FormLoads(object):
def setupUi(self, FormLoads):
FormLoads.setObjectName("FormLoads")
FormLoads.resize(88, 105)
FormLoads.setFocusPolicy(QtCore.Qt.TabFocus)
FormLoads.setWindowTitle("LoadChannel")
self.gridLayout = QtWidgets.QGridLayout(FormLoads)
self.gridLayout.setContentsMargins(8, 8, 8, 8)
self.gridLayout.setSpacing(0)
self.gridLayout.setObjectName("gridLayout")
self.groupBox = QtWidgets.QGroupBox(FormLoads)
font = QtGui.QFont()
font.setPointSize(10)
self.groupBox.setFont(font)
self.groupBox.setObjectName("groupBox")
self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox)
self.gridLayout_2.setContentsMargins(8, 8, 8, 8)
self.gridLayout_2.setObjectName("gridLayout_2")
self.pushStop = QtWidgets.QPushButton(self.groupBox)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushStop.sizePolicy().hasHeightForWidth())
self.pushStop.setSizePolicy(sizePolicy)
self.pushStop.setMinimumSize(QtCore.QSize(30, 0))
font = QtGui.QFont()
font.setPointSize(10)
self.pushStop.setFont(font)
self.pushStop.setText("Stop")
self.pushStop.setCheckable(True)
self.pushStop.setObjectName("pushStop")
self.gridLayout_2.addWidget(self.pushStop, 1, 0, 1, 1)
self.pushReload = QtWidgets.QPushButton(self.groupBox)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushReload.sizePolicy().hasHeightForWidth())
self.pushReload.setSizePolicy(sizePolicy)
self.pushReload.setMinimumSize(QtCore.QSize(30, 0))
font = QtGui.QFont()
font.setPointSize(10)
self.pushReload.setFont(font)
self.pushReload.setText("Load")
self.pushReload.setCheckable(True)
self.pushReload.setObjectName("pushReload")
self.gridLayout_2.addWidget(self.pushReload, 1, 1, 1, 1)
self.spinBox = QtWidgets.QSpinBox(self.groupBox)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spinBox.sizePolicy().hasHeightForWidth())
self.spinBox.setSizePolicy(sizePolicy)
self.spinBox.setMinimumSize(QtCore.QSize(51, 0))
font = QtGui.QFont()
font.setPointSize(13)
self.spinBox.setFont(font)
self.spinBox.setMinimum(-20)
self.spinBox.setMaximum(12)
self.spinBox.setObjectName("spinBox")
self.gridLayout_2.addWidget(self.spinBox, 0, 0, 1, 2)
self.gridLayout.addWidget(self.groupBox, 0, 0, 1, 1)
self.retranslateUi(FormLoads)
QtCore.QMetaObject.connectSlotsByName(FormLoads)
def retranslateUi(self, FormLoads):
_translate = QtCore.QCoreApplication.translate
self.groupBox.setTitle(_translate("FormLoads", "GroupBox"))
self.pushStop.setShortcut(_translate("FormLoads", "S"))
self.pushReload.setShortcut(_translate("FormLoads", "L"))
あなたはtranslateメソッドでこれをしたいのはなぜ? – eyllanesc
私はtranslateメソッドで必ずしもそうとは限りませんが、それはQtCreatorが自動的に置く場所です。それがバグなのか不思議です。 – chmedly
さて、スピンボックスはどういう意味ですか? – eyllanesc