crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Синхронизация двух QScrollArea.
Valter
  опции профиля:
сообщение 6.2.2015, 16:49
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 25.12.2012
Пользователь №: 3655

Спасибо сказали: 0 раз(а)




Репутация:   0  


Как синхронизировать по прокрутке два одинаковых QScrollArea? То есть, двигаем вертикальный скролл у одного, второй прокручивается в ту же позицию и наоборот.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 6.2.2015, 17:53
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Получить QScrollBar для каждой из областей и присоединить сигналы слоты соответствующие. В чем проблема?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Valter
  опции профиля:
сообщение 7.2.2015, 10:46
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 25.12.2012
Пользователь №: 3655

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(wiz29 @ 6.2.2015, 17:53) *
В чем проблема?


В том, что сделать это не получается.
В строке
connect(ui->scrollArea_1->verticalScrollBar(), SIGNAL(sliderMoved(int)), this, SLOT(scrollMoved(int)));
выдаётся ошибка
no matching function for call to 'MainWindow::connect(QScrollBar*, const char*, MainWindow* const, const char*).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 7.2.2015, 21:22
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


MainWindow* const

Видимо вы делаете это в функции, которая объявлена как const.
Уберите модификатор const и все должно получится.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Valter
  опции профиля:
сообщение 7.2.2015, 21:56
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 25.12.2012
Пользователь №: 3655

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 7.2.2015, 21:22) *
Видимо вы делаете это в функции, которая объявлена как const.


Делаю в конструкторе QMainWindow, который объявлен вот так:
public:
    explicit MainWindow(QWidget *parent = 0);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 8.2.2015, 17:39
Сообщение #6


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Покажите код конструктора.
На всякий случай: проверьте от чего наследуется MainWindow (это должен быть QMainWindow или QWidget), проверьте что определен макрос Q_OBJECT.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Valter
  опции профиля:
сообщение 8.2.2015, 18:30
Сообщение #7


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 25.12.2012
Пользователь №: 3655

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 8.2.2015, 17:39) *
Покажите код конструктора.

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->scrollArea_1->verticalScrollBar(), SIGNAL(sliderMoved(int)), this, SLOT(scrollMoved(int)));
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 8.2.2015, 21:07
Сообщение #8


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Добавьте в начало файла
#include <QScrollArea>
#include <QScrollBar>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Valter
  опции профиля:
сообщение 9.2.2015, 22:30
Сообщение #9


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 25.12.2012
Пользователь №: 3655

Спасибо сказали: 0 раз(а)




Репутация:   0  


Проблема решена, действительно, достаточно было добавить #include <QScrollBar>. А ведь в ui_mainwindow.h такое включение уже было, странно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 10.2.2015, 9:19
Сообщение #10


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


В ui_mainwindow.h обычно #include <QScrollArea> в котором QScrollBar forward-declared. А при вызове connect требуется знать что это наследник QObject.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 8.8.2022, 19:51