2012-04-07 14 views

cevap

7

Bir yatay/dikey çizgi widget'ı kastettiğinizi tahmin ediyorum: sadece gri bir arka plan rengine sahip basit bir QWidget ve yatay sabit yükseklik (1-3 piksel) ve genişleyen genişlik widget'idir, dikey genişlikli bir genişliktir yükseklik widget'ı.

Yatay örnek kod:

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

yüksekliğinde 3, batık gölge ve hattı ile bir QFrame olan UIC araç tarafından oluşturulan başlık incelersek Görebiliyorsun 1. eşit genişlik.

3

QFrame :: setFrameShape(). Bir satır almak için QFrame :: HLine veya QFrame :: VLine işlevinin argümanı olarak kullanın.

Qt 5.7 (kullanarak menüde kontrol edilebilir "Form/Kod Görüntüle ...") bir yatay Hattı için Qt Designer tarafından üretilen kod olarak
// 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

olduğunu :

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

Bu irade Qt Designer'da gördüğünüz satırları oluşturun.

Horizontal lines in Qt

Tam kod:

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

güncel cevaplar çalışma çözümlerini vermek görünmüyor, burada bütün cevapların bir karşılaştırma (bu çözüm ilk satırı) 'dir

İlgili konular