将QSlider放在QToolButton旁边

时间:2015-10-16 13:36:26

标签: qt qt5 qwidget qslider

我有一个使用LineEdit的Widgets来设置一些int值。为了更容易,我有一个额外的QToolButton,它将显示一个QSlider来修改该值。

重要提示:滑块是隐藏的!只有按下按钮才会出现。 当我连续有20个滑块窗口小部件时,如果放入预定义的布局,我会浪费每个窗口的空间。 如果在弹出之前不需要空格,则需要进行窗口调整。

屏幕截图代表ValueSelectorWidget。我列出了多个。

在ValueSelectorWidget类中,我有:

valveSlider = new QSlider(Qt::Horizontal, this);

正如您在屏幕截图中看到的,当我单击左侧ToolButton时,会出现QSlider。 Screenshot

在ValueSelectorWidget的左上角,因为上面的QSlider对象cration中有this

如何将左滑块放置在左侧ToolButton(sliderButton)?

  QPoint sliderButtonPos = sliderButton->pos();
  sliderButtonPos.rx() + 50 ;
  sliderButtonPos.ry() + 50;

  valveSlider->setGeometry(sliderButtonPos.x(), sliderButtonPos.y(), 120, 20);

如下所示:screenshot当我按下红点按钮时,滑块将出现在它旁边或当前鼠标位置旁边。

但这也不起作用。有什么建议?提前完成。

2 个答案:

答案 0 :(得分:0)

您可以将设计器中的此滑块与其他窗口小部件一起添加到布局中。 然后只需为构造函数中的滑块调用类似widget.slider1->setVisible(false);的smth,以便在开头隐藏它。然后在按钮中点击插槽,使其像widget.slider1->setVisible(true);一样。 您需要检查布局如何工作,以便清楚地了解widgwets的位置。

答案 1 :(得分:0)

您不应该使用坐标来设计GUI。而是使用Qt给出的不同布局:http://doc.qt.io/qt-5/qlayout.html#details可能是一个很好的开始!

现在您的小部件完全对齐,请考虑@johngull回答隐藏/显示滑块。例如,您可以连接按钮onClick信号以切换滑块的显示