【问题标题】:How does designer create a Line widget?设计师如何创建 Line 小部件?
【发布时间】:2012-04-20 16:23:07
【问题描述】:

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

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

【问题讨论】:

    标签: qt qt4.7


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      查看 QFrame::setFrameShape()。要获得一条线,请使用 QFrame::HLineQFrame::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】:

        它是一个高度为 3、下沉阴影和线宽等于 1 的 QFrame。 看一下uic工具生成的header就可以看到了。

        【讨论】:

          【解决方案4】:

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

          横向示例代码:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-09-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多