2017-10-09 164 views
0

我有這個聲音觀衆,對於缺乏一個更好的widget的,使用QProgressBars顯示總容積與各個RTA倉的容積,除了選擇範圍的「有趣」垃圾箱:如何居中QProgressBar的塊?

enter image description here

父窗口小部件的樣式表爲"background-color: DimGray;";我不知道這是否與問題有關。的progressbars本身設置是這樣的:

AudioMeter::AudioMeter(..., QWidget* parent) : 
    QWidget(parent) 
{ 
    ... 
    meter = new QProgressBar(this); 
    meter->setOrientation(Qt::Vertical); 
    meter->setFormat(""); 
    meter->setGeometry(...); 
    meter->setRange(FixedPoint::Zero, FixedPoint::One); 
} 

和使用這樣的:

void AudioMeter::setValue(int value) 
{ 
    meter->setValue(value); 
} 

的問題是,在組塊(淺藍色)似乎被偏移到由幾個像素的左並增加一到兩個,所以它看起來不正確。在Lubuntu 16.04 LTS(如圖)和Ubuntu 16.04 LTS上都是如此。我怎樣才能讓他們居中?


或者,如果有更好的插件使用(用簡單的代碼,而不是用20重新實現的方法,比如我在一些例子中已經看到了一個自定義的東西),我接受這一點。

回答

1

http://doc.qt.io/qt-4.8/stylesheet-examples.html#customizing-qprogressbar

http://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qprogressbar

http://doc.qt.io/qt-5/stylesheet-customizing.html#the-box-model

Qt Stylesheet Box Model

https://www.w3schools.com/css/css_padding.asp

它看起來像右填充可能是關閉的某些原因。

// try this and see if it helps 
meter->setStyleSheet("padding: 0;"); 
// or just zero out the right padding 
meter->setStyleSheet("padding-right: 0;"); 

如果沒有,你可能需要做樣式編輯某些迭代...

使用stylesheet.css文件中爲你的程序相同的路徑:

http://doc.qt.io/qt-5/qapplication.html#QApplication

-stylesheet=樣式表,設置應用樣式表。該值必須是包含樣式表的文件的路徑。

所以你

meters -stylesheet=./stylesheet.css 

運行您的程序,並在stylesheet.css與填寫:

QProgressBar { 
    /* attempt at fix by removing all padding */ 
    padding: 0; 
    /* Another style to try out sometime: 
QProgressBar { 
    border: 2px solid grey; 
    border-radius: 5px; 
} 

QProgressBar::chunk { 
    background-color: #05B8CC; 
    width: 20px; 
}*/ 
} 

我也通過連接它重新加載到應用廣泛的熱鍵,或做樣式表的原型你的程序中有一個按鈕。

QString stylesheet; 
QFile f("stylesheet.css"); 
if (f.open(QFile::ReadOnly | QFile::Text)) 
{ 
    QTextStream in(&f); 
    stylesheet = in.readAll(); 
} 
qApp->setStyleSheet(stylesheet); 
qApp->style()->unpolish(qApp); 
qApp->style()->polish(qApp); 

希望有幫助。

+0

事實上,它是''邊界'做到了,而不是'填充',但你是在正確的軌道上。+1,也許是一個接受。 – AaronD