Russian Qt Forum
Сентябрь 30, 2024, 20:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Slider connection  (Прочитано 1844 раз)
ann-joker
Гость
« : Март 17, 2012, 17:48 »

Задача: Дано 2 слайдера. Перемещая один, другой должен двигаться в обратную сторону.
можно ли делать так?
#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    layout = new QHBoxLayout;
    sl1 = new QSlider();
    sl1->setRange(0,100);
    int a;
    sl2 = new QSlider();
    sl2->setRange(0,100);
    sl2->setValue(50);
    sl1->setValue(50);
    layout->addWidget(sl1);
    layout->addWidget(sl2);
    this->setLayout(layout);
    QObject::connect(sl1, SIGNAL(valueChanged(a)), sl2, SLOT(setValue(a)));
    QObject::connect(sl2, SIGNAL(valueChanged(a)), sl1, SLOT(setValue(a)));
}

Widget::~Widget()
{

}


Если нет, как сделать слот? Они в общем, не коннектятся, если так.

//void Widget::a1(){
//  int a = sl1->value();
//  sl2->setValue( a);
//  }

//void Widget::a2(){
//    int a = sl1->value();
//    sl2->setValue( a);
//    }
Записан
V1KT0P
Гость
« Ответ #1 : Март 17, 2012, 17:56 »

Задача: Дано 2 слайдера. Перемещая один, другой должен двигаться в обратную сторону.
можно ли делать так?
А они разве не начнут зацикливаться? Первый сдвинет второй, второй в ответ сдвинет первый ну и пойдет вот-так по кругу.

добавлено:
Я бы вот так сделал:
Код
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
   connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(slide1(int)));
   connect(ui->horizontalSlider_2, SIGNAL(valueChanged(int)), this, SLOT(slide2(int)));
}
 
void MainWindow::slide1(int value)
{
   ui->horizontalSlider_2->setValue(ui->horizontalSlider_2->maximum() - value);
}
 
void MainWindow::slide2(int value)
{
   ui->horizontalSlider->setValue(ui->horizontalSlider->maximum() - value);
}
 
« Последнее редактирование: Март 17, 2012, 18:01 от V1KT0P » Записан
ann-joker
Гость
« Ответ #2 : Март 17, 2012, 18:10 »

Мы с ui не учились еще..
оказывается в connectе, this надо было написать..
спасибо!)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.073 секунд. Запросов: 21.