python qt pyqt

python - pyqt pip



Cómo hacer una línea horizontal en Qt mediante programación. (2)

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:

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:

<widget class="Line" name="line"> <property name="geometry"> <rect> <x>150</x> <y>110</y> <width>118</width> <height>3</height> </rect> </property> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget>


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);