2014-10-30 76 views
1

下沒有影響我使用QT5 QSlider調色板窗口

slider->setPalette(QPalette(mycolor, mycolor)); 

着色滑塊(QT5)。在Linux下,這個效果很好,但在Windows 7下,滑塊看起來完全正常,沒有任何顏色變化。

有沒有什麼辦法讓窗口下的彩色滑塊?

回答

1

你需要呼籲QSlidersetAutoFillBackground(true)爲了這個工作:

QPalette p; 
p.setColor(QPalette::Window, QColor(42, 42, 42)); 
slider->setAutoFillBackground(true); 
slider->setPalette(p); 

作爲替代方案,你可以使用QSS

slider->setStyleSheet("QSlider::groove:horizontal { background-color: red; } "); 

的水平滑塊或

slider->setStyleSheet("QSlider::groove:vertical{ background-color: red; } "); 

垂直滑塊。

如果你想設置一個QColor你會想要做的事,如:

QColor myColor; 
myColor.setRgb(42, 42, 42); 
QString backgroundColor = QString("rgb("%1, %2, %3);").arg(myColor.red()).arg(myColor.green()).arg(myColor.blue());"); 
slider->setStyleSheet("QSlider::groove:vertical{ background-color: " + backgroundColor + " } "); 

,這樣的結果會是這樣的:

QSlider::groove:vertical{ background-color: rgb(42, 42, 42); } 

更多細節here

+0

謝謝!我可以給一個QColor對象而不是一個字符串嗎?基本上我有三個滑塊與3D視口中的三個對象相關聯。爲了使該關聯可見,我想對滑塊着色。 – Uroc327 2014-10-30 16:18:10

+0

好的,請稍後查看我的編輯內容。 – Iuliu 2014-10-30 16:20:53

+0

@ Uroc327看我的編輯。我沒有測試過代碼,但它應該可以工作。如果它不讓我知道,我會仔細看看。 – Iuliu 2014-10-30 16:25:50