如何居中QProgressBar的块?
我有这个声音观众,对于缺乏一个更好的widget的,使用QProgressBars显示总容积与各个RTA仓的容积,除了选择范围的“有趣”垃圾箱:如何居中QProgressBar的块?
父窗口小部件的样式表为"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
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);
希望有帮助。
事实上,它是''边界'做到了,而不是'填充',但你是在正确的轨道上。+1,也许是一个接受。 – AaronD