2011-08-28 24 views
1

我正在嘗試爲我正在開發的Python/Qt應用程序實現一個簡單的「第一步」嚮導。這對設計師來說很容易,但像往常一樣,魔鬼在於細節。 我的問題是'標題'字段對我來說太大了(約50%的可用屏幕屬性)。這是一個screenshotthere * .ui文件。QWizard:更改標題字段的高度/尺寸

我已經看過所有的QWizard/QWizardPage屬性,並且找不到任何涉及「標題」字段大小/樣式的內容。有沒有辦法做到這一點(也許使用自定義樣式表?)還是我運氣不好?

回答

2

標題標籤是在內部QGridLayout,除非你要麼佈局添加到頁面(或頁面的垂直尺寸政策明確設置爲MinimumExpandingExpanding)強制包含頁面擴大網格單元,標題總是佔總高度的50%。

+0

謝謝,設置'QWizardPage's的垂直尺寸策略的確有訣竅!然而,添加布局並沒有,但只要第一種方法有效...... :-) – jbaiter

0

如果設置了像素圖,就像QWizard::ModernStyle上的QWizard::WatermarkPixmap一樣,無論如何,高度都會被鎖定。

爲了解決這個問題,請使用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(); 

希望有幫助。