勾号未正确绘制的QSlider

时间:2019-06-19 07:55:49

标签: c++ qt qslider

为QSlider启用刻度线似乎会弄乱滑块本身的sizeHint。

考虑以下简单代码:

#include <QApplication>

int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QSlider ds{Qt::Horizontal};

   ds.setRange(0, 100);
   ds.setTickPosition(QSlider::TicksAbove);
   ds.setTickInterval(20);
   ds.show();

   return a.exec();
}

这是呈现方式:

enter image description here

注意下面如何裁剪滑块。

在复杂的小部件中,此行为也相同:

enter image description here

调整第一个滑块刻度位置的窗口大小不会跟随滑块本身。

enter image description here

所以问题是如何在启用刻度的情况下正确呈现QSlider?

2 个答案:

答案 0 :(得分:0)

我建议在顶部底部处添加 VerticalSpacers ,它们均设置为“ 扩展”以便将滑块夹在中间。因此,当您调整整个窗口小部件的大小时,对于垂直更改,滑块会保持 minimumHeight ,但是对于水平更改,它会扩展(至少这是我期望的目标)。

答案 1 :(得分:0)

我发现解决此问题的实用方法是将最小尺寸手动设置为最小,以免出现错误的渲染:

ds.setMinimumHeight(30);