2016-12-13 2 views
1

Я хотел бы изменить направление виджета справа налево с помощью SetLyouatDirection, но не работает Этот мой результат:PyQt Изменить направление QWidget справа налево

enter image description here

это мой код:

for item in listConcrdance: 
     c+=1 
     widgitItem = QtGui.QListWidgetItem() 
     widget = QtGui.QWidget() 
     widgetText=QtGui.QLabel(str(c)+". "+item[1]+" ("+self.process.convertNumberToNameOFSorat(item[0][1])+":"+item[0][2]+")") 
     widgetText.setLayoutDirection(QtCore.Qt.RightToLeft) 
     widgetLayout = QtGui.QHBoxLayout() 
     widgetLayout.addWidget(widgetText) 
     widgetLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) 
     widget.setLayout(widgetLayout) 
     self.listWidgetQuran.addItem(widgitItem) 
     widgitItem.setSizeHint(widget.sizeHint()) 
     self.listWidgetQuran.setItemWidget(widgitItem, widget) 
+0

Попробуйте применить свой 'setLayoutDirection (QtCore.Qt.RightToLeft)' на ваших 'widgetLayout' как' widgetLayout.setLayoutDirection (QtCore.Qt.RightToLeft) ' – SyedElec

+0

AttributeError: объект 'QHBoxLayout' не имеет атрибута 'setLayoutDirection' –

+0

Извините, что я имел в виду 'widgetLayout.setDirection (QtGui.QBoxLayout.RightToLeft)' вместо 'setLayoutDirection': [doc] (http://doc.qt.io/qt-4.8/qboxlayout.html# setDirection) – SyedElec

ответ

3

Использование [your_label].setAlignment(QtCore.Qt.AlignRight):

from PyQt4 import QtCore 
from PyQt4 import QtGui 


class Widget(QtGui.QWidget): 
    def __init__(self, parent=None): 
     super(Widget, self).__init__(parent=parent) 
     self.verticalLayout = QtGui.QVBoxLayout(self) 
     self.listWidget = QtGui.QListWidget(self) 
     self.verticalLayout.addWidget(self.listWidget) 
     for item in range(10): 
      widgitItem = QtGui.QListWidgetItem(self.listWidget) 
      widget = QtGui.QWidget() 
      widgetText = QtGui.QLabel(str(item)) 
      if item % 2 == 0: 
       widgetText.setAlignment(QtCore.Qt.AlignRight) 
      else: 
       widgetText.setAlignment(QtCore.Qt.AlignLeft) 
      widgetLayout = QtGui.QHBoxLayout() 
      widgetLayout.addWidget(widgetText) 
      widget.setLayout(widgetLayout) 
      widgitItem.setSizeHint(widget.sizeHint()) 
      self.listWidget.setItemWidget(widgitItem, widget) 

if __name__ == '__main__': 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    w = Widget() 
    w.show() 
    sys.exit(app.exec_()) 

Выход:

enter image description here