在 Qt Designer 中,您可以拖动一个“Line”小部件,这将在您的布局中创建一条线。
但是我检查了文档和标题,我没有找到“行”标题/小部件,它是什么?
在 Qt 5.7 中,Qt Designer 为水平线生成的代码(可以使用“Form/View Code...”在菜单中检查)是:
QFrame *line;
line = new QFrame(Form);
line->setFrameShape(QFrame::HLine);
line->setFrameShadow(QFrame::Sunken);
这将创建您在 Qt Designer 中看到的行。
当前的答案似乎没有给出可行的解决方案,这里是所有答案的比较(这个解决方案是第一行):
完整代码:
#include <QtWidgets>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QWidget widget;
auto layout = new QVBoxLayout;
widget.setLayout(layout);
widget.resize(200, 200);
auto lineA = new QFrame;
lineA->setFrameShape(QFrame::HLine);
lineA->setFrameShadow(QFrame::Sunken);
layout->addWidget(lineA);
QWidget *lineB = new QWidget;
lineB->setFixedHeight(2);
lineB->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
lineB->setStyleSheet(QString("background-color: #c0c0c0;"));
layout->addWidget(lineB);
auto lineC = new QFrame;
lineC->setFixedHeight(3);
lineC->setFrameShadow(QFrame::Sunken);
lineC->setLineWidth(1);
layout->addWidget(lineC);
QFrame* lineD = new QFrame;
lineD->setFrameShape(QFrame::HLine);
layout->addWidget(lineD);
widget.show();
return app.exec();
}
我猜你的意思是水平/垂直线小部件:它只是一个简单的 QWidget,背景颜色为灰色,水平是固定高度(1-3 像素)和扩展宽度小部件,垂直是固定宽度扩展高度小部件。
横向示例代码:
QWidget *horizontalLineWidget = new QWidget;
horizontalLineWidget->setFixedHeight(2);
horizontalLineWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
horizontalLineWidget->setStyleSheet(QString("background-color: #c0c0c0;"));
查看QFrame::setFrameShape()。要获得一条线,请使用QFrame::HLine或QFrame::VLine作为函数的参数。
// Create a horizontal line by creating a frame and setting its shape to QFrame::HLine:
QFrame* hFrame = new QFrame;
hFrame->setFrameShape(QFrame::HLine);
// Create a vertical line by creating a frame and setting its shape to QFrame::VLine:
QFrame* vFrame = new QFrame;
vFrame->setFrameShape(QFrame::VLine);
它是一个高度为 3,下沉阴影和线宽等于 1 的 QFrame。如果检查 uic 工具生成的 header,您可以看到它。