20


4

Qtでプログラムで水平線を作成する方法

Qtで水平線を作成する方法を見つけようとしています。 これはDesignerで簡単に作成できますが、プログラムで作成したいと思います。 私はいくつかのグーグルを行って、UIファイルのXMLを見てきましたが、何も理解できませんでした。

これは、UIファイルのxmlのようです。

     150
     110
     118
     3



    Qt::Horizontal

2 回答


32


水平線または垂直線は、いくつかのプロパティが設定された単なる「QFrame」です。 C ++では、行を作成するために生成されるコードは次のようになります。

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


8


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)

これは(たとえば)次のように使用できます。

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_()

その結果、次のようになります。

Windows 10でのQHLineの例