Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ann-joker от Март 17, 2012, 17:48



Название: Slider connection
Отправлено: 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);
//    }


Название: Re: Slider connection
Отправлено: V1KT0P от Март 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);
}
 


Название: Re: Slider connection
Отправлено: ann-joker от Март 17, 2012, 18:10
Мы с ui не учились еще..
оказывается в connectе, this надо было написать..
спасибо!)