Cómo hacer una línea horizontal en Qt mediante progtwigción.

Estoy tratando de averiguar cómo hacer una línea horizontal en Qt. Esto es fácil de crear en Designer pero quiero crear uno programáticamente. He hecho un poco de google y miré el xml en un archivo ui pero no he podido resolver nada.

Así es como se ve el xml del archivo ui:

   150 110 118 3    Qt::Horizontal   

Una línea horizontal o vertical es solo un QFrame con algunas propiedades establecidas. En C ++, el código que se genera para crear una línea se ve así:

 line = new QFrame(w); line->setObjectName(QString::fromUtf8("line")); line->setGeometry(QRect(320, 150, 118, 3)); line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Sunken); 

Aquí hay otra solución usando PySide:

 from PySide.QtGui import QFrame class QHLine(QFrame): def __init__(self): super(QHLine, self).__init__() self.setFrameShape(QFrame.HLine) self.setFrameShadow(QFrame.Sunken) class QVLine(QFrame): def __init__(self): super(QVLine, self).__init__() self.setFrameShape(QFrame.VLine) self.setFrameShadow(QFrame.Sunken) 

Que luego se puede utilizar como (por ejemplo):

 from PySide.QtGui import QApplication, QWidget, QGridLayout, QLabel, QComboBox if __name__ == "__main__": app = QApplication([]) widget = QWidget() layout = QGridLayout() layout.addWidget(QLabel("Test 1"), 0, 0, 1, 1) layout.addWidget(QComboBox(), 0, 1, 1, 1) layout.addWidget(QHLine(), 1, 0, 1, 2) layout.addWidget(QLabel("Test 2"), 2, 0, 1, 1) layout.addWidget(QComboBox(), 2, 1, 1, 1) widget.setLayout(layout) widget.show() app.exec_() 

Lo que resulta en lo siguiente:

Ejemplo de QHLine en Windows 10