2015-10-16 2 views
1

У меня есть виджеты с параметрами LineEdit для установки некоторых значений int. Чтобы сделать это проще, у меня есть дополнительный QToolButton, который должен показать QSlider для модификации этого значения.Место QSlider рядом с QToolButton

ВАЖНО: Слайдер скрыт! Он появляется только при нажатии кнопки. Когда у меня есть 20 слайдеровВидки в строке, я бы потратил пространство для каждого из них, если поместить в предопределенный макет. Если пространство не требуется до всплывающего окна, тогда потребуется настройка окна.

Снимок экрана представляет собой ValueSelectorWidget. У меня их много.

В классе ValueSelectorWidget у меня есть:

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

Как вы можете видеть на скриншоте, когда я нажимаю на левом ToolButton, появляется QSlider. Screenshot

На верхней левой стороне ValueSelectorWidget из-за this в QSlider объекта cration выше.

Как разместить этот слайдер вокруг левого инструментальной панели (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

Вы можете добавить этот слайдер в конструктор к макету вместе с другими виджетами. Тогда просто позвоните smth как widget.slider1->setVisible(false); для слайдера в конструкторе, чтобы скрыть его в начале. И в слоте щелчка кнопки сделайте smth как widget.slider1->setVisible(true);. Вам нужно проверить, как работают макеты для четкого понимания позиций widgwets.

+0

Представьте, что у меня есть 20 ValueSelectorWidget в VerticalLayout. Когда я поместил все эти невидимые слайдеры в макет, я потратил бы 20 пробелов для слайдеров, особенно если их не использовать. Когда пространство не требуется, пока show() не будет иметь корректировки выравнивания. Оба неадекватны. Я хотел бы, чтобы независимое всплывающее окно близко к QButton. –

+0

Макет приспосабливает размеры отображаемого виджета, поэтому здесь не будет «потерянных пробелов». Если вы скроете ползунок, другой виджет займет свободное место, чтобы развернуть себя –

0

Вы не должны проектировать свой графический интерфейс с помощью координат. Вместо этого используйте различные макеты, заданные Qt: http://doc.qt.io/qt-5/qlayout.html#details может стать отличным началом!

Теперь, когда ваши виджеты полностью выровнены, рассмотрите @johngull ответ, чтобы скрыть/отобразить слайдер. Например, вы можете подключить вашу кнопку onClick-сигнал для переключения отображения вашего слайдера.

Смежные вопросы