PyQt4:重新排序QDialogBu​​ttonBox中的Ok和Cancel按钮

时间:2014-06-13 15:40:10

标签: python qt user-interface pyqt4

如何覆盖QDialogBu​​ttonBox类中按钮的标准顺序?

似乎PyQt follows some kind of standard based on the platform it runs on

目前取消在左边,Ok在右边(我在CentOS 6上):

enter image description here

但是我的用户发现它令人困惑,并且反对他们过去习惯并要求我交换它们:

enter image description here

这是我创建框的方式:

    self.buttonBox = QtGui.QDialogButtonBox(self)
    self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
    self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok|QtGui.QDialogButtonBox.Cancel)

1 个答案:

答案 0 :(得分:3)

我考虑过改变包含按钮的布局中的方向:

buttonBox.layout().setDirection(QtGui.QBoxLayout.RightToLeft)

在以下示例中:

from PySide import QtGui, QtCore
app = QtGui.QApplication([])

buttonBox = QtGui.QDialogButtonBox()
buttonBox.setOrientation(QtCore.Qt.Horizontal)
buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok|QtGui.QDialogButtonBox.Cancel)
buttonBox.layout().setDirection(QtGui.QBoxLayout.RightToLeft) # with this line the order of the buttons swap

buttonBox.show()
app.exec_()

它反转了我的订单(如果RightToLeft不起作用,也请尝试QtGui.QBoxLayout.LeftToRight)。