Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Синхронизация двух QScrollArea.
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
Valter
Как синхронизировать по прокрутке два одинаковых QScrollArea? То есть, двигаем вертикальный скролл у одного, второй прокручивается в ту же позицию и наоборот.
wiz29
Получить QScrollBar для каждой из областей и присоединить сигналы слоты соответствующие. В чем проблема?
Valter
Цитата(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
MainWindow* const

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


Делаю в конструкторе QMainWindow, который объявлен вот так:
public:
    explicit MainWindow(QWidget *parent = 0);
lanz
Покажите код конструктора.
На всякий случай: проверьте от чего наследуется MainWindow (это должен быть QMainWindow или QWidget), проверьте что определен макрос Q_OBJECT.
Valter
Цитата(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
Добавьте в начало файла
#include <QScrollArea>
#include <QScrollBar>
Valter
Проблема решена, действительно, достаточно было добавить #include <QScrollBar>. А ведь в ui_mainwindow.h такое включение уже было, странно.
lanz
В ui_mainwindow.h обычно #include <QScrollArea> в котором QScrollBar forward-declared. А при вызове connect требуется знать что это наследник QObject.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.