В конструкторе второго объекта реализованы два метода с сигналами готовности и слотами QScrollArea
:
connect(parentScrollArea->horizontalScrollBar(),
SIGNAL(valueChanged(int)),
relatedDiagram->parentScrollArea->horizontalScrollBar(),
SLOT(setValue(int)));
connect(relatedDiagram->parentScrollArea->horizontalScrollBar(),
SIGNAL(valueChanged(int)),
parentScrollArea->horizontalScrollBar(),
SLOT(setValue(int)));
Я решил не отключать прямую прокрутку второго объекта.
В методе синхронизации я добавил для случая синхронизации:
connect(commonArea->horizontalScrollBar(),
SIGNAL(valueChanged(int)),
resultsArea->horizontalScrollBar(),
SLOT(setValue(int)));
connect(resultsArea->horizontalScrollBar(),
SIGNAL(valueChanged(int)),
commonArea->horizontalScrollBar(),
SLOT(setValue(int)));
И рассинхронизация:
disconnect(commonArea->horizontalScrollBar(),
SIGNAL(valueChanged(int)),
resultsArea->horizontalScrollBar(),
SLOT(setValue(int)));
disconnect(resultsArea->horizontalScrollBar(),
SIGNAL(valueChanged(int)),
commonArea->horizontalScrollBar(),
SLOT(setValue(int)));