设计师如何创建Line小部件?

时间:2012-04-07 10:52:21

标签: qt qt4.7

在Qt Designer中,您可以拖动“Line”小部件,这将在您的布局中创建一条线。

但我检查了文档和标题,我没有找到“Line”标题/小部件,它是什么?

5 个答案:

答案 0 :(得分:11)

在Qt 5.7中,Qt Designer为水平线生成的代码(可在菜单中使用"表格/查看代码..."进行检查)是:

QFrame *line;
line = new QFrame(Form);
line->setFrameShape(QFrame::HLine);
line->setFrameShadow(QFrame::Sunken);

这将创建您在Qt Designer中看到的行。

目前的答案似乎没有给出有效的解决方案,这里是所有答案的比较(这个解决方案是第一行):

Horizontal lines in Qt

完整代码:

#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();
}

答案 1 :(得分:7)

我猜你的意思是水平/垂直线小部件:它只是一个简单的QWidget,背景为灰色,水平方向是固定高度(1-3像素)和扩展宽度小部件,垂直方向是固定宽度扩展高度窗口小部件。

横向示例代码:

QWidget *horizontalLineWidget = new QWidget;
horizontalLineWidget->setFixedHeight(2);
horizontalLineWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
horizontalLineWidget->setStyleSheet(QString("background-color: #c0c0c0;"));

答案 2 :(得分:4)

这是一个QFrame,高度为3,凹陷阴影和线宽等于1。 如果检查由uic工具生成的标题,您可以看到它。

答案 3 :(得分:3)

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

答案 4 :(得分:-1)

只需添加它:

addSeparator();

完成。