如何居中QProgressBar的块?

问题描述:

我有这个声音观众,对于缺乏一个更好的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重新实现的方法,比如我在一些例子中已经看到了一个自定义的东西),我接受这一点。

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