2012-04-07 8 views

Respuesta

7

Supongo que se refiere a un widget de línea horizontal/vertical: es simplemente un QWidget simple con un fondo de color gris y el horizontal es un widget de altura fija (1-3 píxeles) y ancho de expansión, la vertical widget de altura.

Horizontal código de ejemplo:

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

Es un QFrame con la altura 3, sombra hundida y ancho de línea igual a 1. Se puede ver si examinar cabecera generado por la herramienta de UIC.

3

Echa un vistazo QFrame :: setFrameShape(). Para obtener una línea, use QFrame :: HLine o QFrame :: VLine como argumento de la función.

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

En Qt 5.7 el código generado por Qt Designer para una línea horizontal (que se puede comprobar en el menú utilizando "Forma/Ver código ...") es:

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

Esta voluntad crea las líneas que ves en Qt Designer.

No parece que estas respuestas actuales para dar soluciones de trabajo, aquí se presenta una comparación de todas las respuestas (esta solución es la primera línea):

Horizontal lines in Qt

código completo:

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