2015-10-16 106 views
1

我有一個帶有LineEdit的小部件來設置一些int值。爲了更容易,我有一個額外的QToolButton,它應該顯示一個QSlider來修改這個值。將QSlider放在QToolButton旁邊

重要提示:滑塊已隱藏!它只有在按下按鈕時纔會出現。 當我連續有20個slidersWidget時,如果放置在預定義的佈局中,我會浪費它們中的每一個的空間。 如果在彈出窗口之前不需要該空間,那麼將需要窗口調整。

該屏幕截圖代表ValueSelectorWidget。我列出了其中的多個。

在ValueSelectorWidget I類有:

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

正如你可以在截圖中看到,當我點擊左邊的工具按鈕,一個QSlider出現。 Screenshot

由於上述QSlider對象文件中的this,因此ValueSelectorWidget的左上角。

如何放置左側ToolButton(sliderButton)的左側滑塊?

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

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

如下列:screenshot當我按下紅色點的按鈕,滑塊應旁邊或旁邊當前鼠標的位置出現。

但這也沒有效果。有什麼建議麼?提前Thanx。

+1

#include user3528438

+0

沒有額外的佈局沒有建議? –

回答

0

您可以在設計器中將此滑塊與其他小部件一起添加到佈局中。 然後在構造函數中爲滑塊調用像widget.slider1->setVisible(false);這樣的smth,以便在開始時隱藏它。並在按鈕點擊插槽使得像widget.slider1->setVisible(true);那樣不起作用。 你需要檢查佈局是如何工作的,以清楚理解widgwets的位置。

+0

想象一下,我在VerticalLayout中有20個ValueSelectorWidget。當我將所有這些隱形滑塊放入佈局中時,我會浪費20個滑塊空間,特別是如果不使用滑塊。當show()之後不需要空間時,我會進行對齊調整。兩者都不足。我想要一個靠近QButton的獨立彈出窗口。 –

+0

佈局調整顯示小部件的尺寸,所以在這裏不會有「浪費的空間」。如果你隱藏滑塊,另一個小部件將把釋放的地方展開 –

0

您不應該使用座標來設計您的GUI。而是使用Qt給出的不同佈局:http://doc.qt.io/qt-5/qlayout.html#details可能是一個很好的開始!

現在您的小部件已完美對齊,請考慮@johngull答案以隱藏/顯示您的滑塊。例如,你可以連接你的按鈕onClick信號切換顯示你的滑塊