1

我有一个带有 LineEdit 的小部件来设置一些 int 值。为了使这更容易,我有一个额外的 QToolButton 将显示一个 QSlider 来修改该值。

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

屏幕截图表示在 ValueSelectorWidget 上。我列出了其中的多个。

在 ValueSelectorWidget 类中,我有:

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

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

由于this在上面的 QSlider 对象 cration 中,位于 ValueSelectorWidget 的左上方。

如何将该滑块放置在左侧 ToolButton (sliderButton) 的周围?

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

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

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

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

4

2 回答 2

0

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

于 2015-10-16T14:11:10.680 回答
0

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

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

于 2015-10-16T14:33:07.243 回答