【问题标题】:Place QSlider next to a QToolButton将 QSlider 放在 QToolButton 旁边
【发布时间】:2015-10-16 13:36:25
【问题描述】:

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

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

截图代表了ValueSelectorWidget。我列出了其中的多个。

在我的 ValueSelectorWidget 类中:

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

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

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

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

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

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

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

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

【问题讨论】:

  • #include
  • 没有额外布局的建议??

标签: qt qt5 qwidget qslider


【解决方案1】:

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

【讨论】:

  • 想象一下我在 VerticalLayout 中有 20 个 ValueSelectorWidget。当我将所有这些不可见的滑块放入布局中时,我会浪费 20 个空间来放置滑块,尤其是在不使用的情况下。当在 show() 之前不需要空间时,我会进行对齐调整。两者都不足。我想要一个靠近 QButton 的独立弹出窗口。
  • 布局会根据显示的小部件调整大小,因此这里不会出现“浪费空间”。如果您隐藏滑块,其他小部件将占据空闲位置以展开自身
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多