2011-08-28 3 views
1

현재 작업하고있는 Python/Qt 응용 프로그램의 간단한 "첫 단계"마법사를 구현하려고합니다. 이것은 Designer와는 정말 쉽지만, 악마는 언제나처럼 세부 사항에 있습니다. 제 문제는 '제목'입력란이 너무 커서 (사용 가능한 화면 영지의 50 %까지). 다음은 screenshot이고, * .ui-file은 there입니다.QWizard : 제목 필드의 높이/크기 변경

나는 이미 QWizard/QWizardPage 속성을 살펴 보았으며 'Title'필드의 크기/스타일을 참조한 것을 찾을 수 없었습니다. 이 작업을 수행 할 수있는 방법이 있습니까 (아니면 사용자 정의 스타일 시트를 사용하고 있을까요?) 아니면 운이 나빴나요?

답변

2

제목 레이블 내부 QGridLayout에, 당신은 페이지 레이아웃을 추가하거나하지 않는 한 확장 페이지를 포함하는 격자 셀을 강제로 (또는 명시 적으로 MinimumExpanding 또는 Expanding에 페이지의 세로 크기 정책을 설정) 제목은 항상 전체 높이의 50 %를 차지합니다.

+0

감사합니다. 'QWizardPage's의 세로 크기 정책을 설정해 주셔서 감사합니다. 그러나 레이아웃을 추가하지 않았지만 첫 번째 방법이 작동하는 한 ...-) – jbaiter

0

QWizard::WatermarkPixmap (QWizard::ModernStyle)과 마찬가지로 pixmap을 설정하면 높이가 고정됩니다.

이 문제를 해결하려면 setSideWidget()을 사용하십시오. 제목 상자에 글꼴 크기 변화에 따라 조정할 수 있도록 QWizard

this->setWizardStyle(QWizard::ModernStyle); 

// setPixmap(QWizard::WatermarkPixmap, QPixmap(":/watermark.gif")); 
QWidget * sideWidget = new QWidget(); 
QGridLayout * gridLayout = new QGridLayout(); 
QLabel * label = new QLabel(); 
label->setPixmap(QPixmap(":/watermark.gif")); 
sideWidget->setLayout(gridLayout); 
gridLayout->addWidget(label); 
this->setSideWidget(sideWidget); 


//this->setSizePolicy(QSizePolicy::MinimumExpanding ,QSizePolicy::MinimumExpanding); 

그리고 마지막의 하위 클래스의 생성자에서

는 가장 쉬운 해킹은 픽스맵의 높이를 조정하고 QWizard에서 설정하는 것입니다 : : LogoPixmap.

int numOfLinesInTitleBox = 2; 
QPixmap p(1,this->fontMetrics().height()*numOfLinesInTitleBox); 
p.fill(Qt::transparent); 
setPixmap(QWizard::LogoPixmap, p); 
this->adjustSize(); 

희망이 있습니다.