2013-01-10 32 views
0

從我開始在QT上使用樣式表開始,這就是我一直在掙扎的東西。爲什麼樣式化QT小部件會使它們超出大小值?

我有這樣的風格:

QPushButton#btnNewCamera 
{ 
    border-radius: 5px; 
    min-width: 20px; 
    min-height: 20px; 
    background-position: center; 
    background-repeat: no-repeat; 
} 

這是代碼我不得不設置,使其工作。

createNewCameraBtn = new QPushButton(); 
createNewCameraBtn->setObjectName(tr("btnNewCamera"));  
createNewCameraBtn->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); 
createNewCameraBtn->setFixedWidth(20); 

它有道理嗎?告訴兩倍的大小?這些按鈕的大小始終相同。 如果我將固定大小設置爲小於20,它仍然可以工作(因爲它保持樣式表的最小大小...所以這讓我猜測樣式表大小是優先值...)

但是,爲什麼不只是告訴樣式表內的大小。爲什麼要添加其他的東西?

有人可以解釋我發生了什麼?爲什麼在樣式表上使用最小寬度來使其工作?爲什麼不給它關於背景的信息,並使它像老式按鈕一樣工作?

+0

我想知道什麼是強制性的,哪些不是! – darkgaze

回答

1

樣式表會改變你的小部件屬性,所以在代碼和樣式表中改變同樣的東西是沒有必要的。如果你想用CSS製作小部件固定尺寸,你需要設置最小和最大尺寸。否則,小部件可能會調整大小。儘量保持所有樣式的東西在一個地方,以保持一切清晰,因爲有時屬性會與代碼和CSS中的混淆。

請記住,屬性將按照它們的應用順序進行更改。因此,如果您先在應用程序上應用CSS,然後更改代碼中的屬性,那麼屬性將保留代碼中的值。如果您更改代碼中的屬性,然後應用CSS,CSS值將被保留

+0

感謝卡米爾。 我如何知道之前應用了哪個?我在應用程序的開始加載css。 此外,我試圖改變大小隻通過樣式表,它沒有工作。這就是爲什麼我必須把它放在代碼上! – darkgaze

+0

使用最小/最大寬度/高度來控制尺寸時,我從來沒有遇到過尺寸問題 –

+0

您只需記住從ui文件中禁用尺寸約束/固定尺寸最小/最大寬度。我記得如果CSS應用於QApplication,它將用於創建窗口小部件,所有其他調用將改變CSS影響 –

相關問題