2012-12-21 9 views
5

콘텐츠에 관계없이 QLabel을 컨테이너의 전체 너비로 확장하려고합니다. (나는 동적으로 텍스트를 설정 때문에이 원하는 그것은 텍스트의 일부를 차단하는 원인이 나중에 위젯 추가)QLabel을 전체 너비로 확장하려면 어떻게합니까?

Widget::Widget(QWidget *parent) 
    : QWidget(parent) 
{ 
    this->setFixedSize(100,100); 
    QHBoxLayout *layout = new QHBoxLayout; 
    this->setLayout(layout); 
    QLabel *label = new QLabel; 
    label->setStyleSheet("background-color:blue"); 
    label->setSizePolicy(QSizePolicy::MinimumExpanding, 
         QSizePolicy::MinimumExpanding); 
    label->setText(tr("test")); 
    layout->addWidget(label, 0, Qt::AlignTop | Qt::AlignLeft); 
}

이 코드는 파란색 상자가 왜 전체 폭으로 확장하지 않는다는 것을 보여줍니다?

답변

8

당신은 설정해야합니다

layout->setContentsMargins(0,0,0,0); 

기본적으로 모든는 QWidget 또는 QFrame 모든 방향으로 마진의 15 개 픽셀을 추가 할 수 있습니다.

주요 문제는 위젯을 레이아웃에 추가 할 때 맞춤을 설정하는 것입니다. 대신 label->setAlignment을 사용하십시오.

layout->addWidget(label); 

코드를 컴파일했지만 변경 사항과 함께 작동합니다.

#include <QApplication> 
#include <QtGui> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    QWidget* w = new QWidget; 
    w->setFixedSize(100,100); 
    QHBoxLayout* layout = new QHBoxLayout; 
    layout->setContentsMargins(0,0,0,0); 
    w->setLayout(layout); 
    QLabel* label = new QLabel; 
    label->setAlignment(Qt::AlignTop | Qt::AlignLeft); 
    label->setContentsMargins(0,0,0,0); 
    label->setStyleSheet("background-color:blue"); 
    label->setSizePolicy(QSizePolicy::MinimumExpanding, 
        QSizePolicy::MinimumExpanding); 
    label->setText("test"); 
    layout->addWidget(label); 
    w->show(); 
    return a.exec(); 
} 
+0

난 그냥 그것을 시도하고 문제 :(지금, 당신은 그것의 원인이 된 오른쪽 정렬 – chacham15

+0

편집이 문제를 해결해야 문제를 해결 나던 :. 여기

는 최소한의 예입니다 문제가 생겼습니다. – Kikohs

+0

허이었다있어 – chacham15

관련 문제