2014-09-30 13 views
1

最近我來到SO this question問我怎樣才能讓我的手在QComboBox的QScrollBar上以改變它的厚度。在閱讀答覆後,我嘗試了我的Qt Embedded應用程序的Marco A.解決方案,但沒有奏效。然後,爲了測試,我將編譯環境更改爲Desktop,並且修復工作正常!QScrollBar與編譯到桌面和嵌入式Linux環境之間存在差異

所以,基本上我的問題是,當我嘗試在Qt中爲嵌入式Linux(ARM)更改QComboBox的QScrollBar寬度時,沒有任何反應,但是如果我爲Qt編譯完全相同的代碼,它將起作用。下面是我使用的測試代碼:

QAbstractItemView* poView = ui->comboBox->view(); 
QScrollBar* poBar = poView->verticalScrollBar(); 
poBar->setStyleSheet("width: 50px;"); 

並沒有做同樣的其他代碼,但顯示了同樣的問題:

ui->comboBox->setStyleSheet("QScrollBar:vertical { width: 50px; }"); 

隨着comboBox在UI形式正在申報在Qt Designer中(在Qt Creator中)。

對於Desktop和Qt for Embedded Linux(4.8.5),Qt版本相同。另一件我覺得奇怪的事情(但應該與它無關)是再次編譯相同的代碼爲桌面顯示一個Windows XP風格的QComboBox,而對於嵌入式使用Plastique風格(我注意到很明顯,由於Plastique顯示三個而不是兩個按鈕來滾動滾動條)。

那麼會發生什麼?我該如何解決這個問題?

回答

1

我注意到相同的症狀。在Qt中,我瞭解許多繪圖已被委託給樣式,並且Plastique樣式似乎存在一個錯誤,因爲它似乎沒有在正確的座標中繪製垂直滾動條,如果它沒有默認大小。所以如果你這樣做:

QScrollBar:vertical 
{ 
    min-width: 35px; 
    width: 35px; 
} 

你最終以你描述的症狀。但是,AFAICS也有處理邊距的問題!如果你玩弄邊緣,例如像這樣:

QScrollBar:vertical 
{ 
    min-width: 35px; 
    width: 35px; 
    margin-right: 35px; 
} 

你應該能夠解決這個錯誤。

至少爲我工作。

+0

感謝您的類型。事實上,當控制滾動條的寬度時,該解決方案工作得很好。現在的問題是,控制器會被竊聽:如果我點擊滾動條的任何部分,但是向下箭頭,則該條會上升!你有任何想法如何解決這個問題嗎? – Momergil 2015-03-25 20:26:47

0
poBar->setMinimumWidth(50); 
poBar->setMaximumWidth(50); 

我與PyQt5,QT5試圖在Python3語法,它定製滾動條在Linux(Ubuntu的14.04)的寬度以及上的windows7

+0

感謝您的回覆,但我已經在Ubuntu和Embedded Linux之前測試過這個解決方案,但它不起作用:雖然它確實改變了條的寬度,但它並沒有改變這個空間的寬度,酒吧位於,所以在最後調整大小的QScrollBar似乎切割,並具有與以前相同的有用面積。對不起,不顯示打印,但正如我認爲我悲傷的Ubuntu不讓我做一個可見的QComboBox列表的打印屏幕。 – Momergil 2014-10-06 12:48:50

+0

@Momergil:你嘗試過pobar-> setGeometry()嗎? – 2014-10-06 13:08:03

+0

沒有區別= T – Momergil 2014-10-06 14:00:15

相關問題