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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Scrooling двух елементов одновременно.  (Прочитано 5648 раз)
JamS007
Гость
« : Декабрь 31, 2009, 00:42 »

Здравствуйте,

Я использую 2е таблицы, и мне нужно их синхронизировать... Подскажите, как сделать, чтоб при скроллинге одной из них, другая прокручивалась автоматически и в соответствии предыдущей...

Спасибо.
Записан
Kolobok
Гость
« Ответ #1 : Декабрь 31, 2009, 01:36 »

Код:
connect( table1->verticalScrollBar(), SIGNAL( valueChanged( int ) ), table2->verticalScrollBar(), SLOT( setValue( int ) ) );
connect( table2->verticalScrollBar(), SIGNAL( valueChanged( int ) ), table1->verticalScrollBar(), SLOT( setValue( int ) ) );

Это вопрос для раздела новичков.
Записан
JamS007
Гость
« Ответ #2 : Декабрь 31, 2009, 13:19 »

может быть... не спорю, Qt только учу. Но Ваш пример не работает.
вот код:
Код:
QObject::connect(ui->namesWidget->verticalScrollBar(), SIGNAL(valueChanged(int)),ui->marksWidget->verticalScrollBar(), SLOT(setValue(int)));

а вот реакция компилятора:
Цитировать
error: no matching function for call to 'MainWindow::connect(QScrollBar*, const char*, QScrollBar*, const char*)'
Записан
Dendy
Гость
« Ответ #3 : Декабрь 31, 2009, 13:26 »

Что такое MainWindow?
Записан
JamS007
Гость
« Ответ #4 : Декабрь 31, 2009, 13:33 »

MainWindow - класс главного окна, привязку сигналов и слотов скроллбаров делаю в конструкторе класса:

код главного окна
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"

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

  // Связываем нужные елементы
    QObject::connect(ui->namesWidget->verticalScrollBar(), SIGNAL(valueChan),ui->marksWidget->verticalScrollBar(), SLOT(setValue(int)));
}

класс главного окна:
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QObject>

#include <QMainWindow>
#include <QResizeEvent>
#include <QSize>
#include <QPoint>
#include <QAction>
#include <QPushButton>
#include <QModelIndex>


   // Классы оформления
#include <Qt>
#include <QSplitter>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

protected:
    void changeEvent(QEvent *e);
    void resizeEvent(QResizeEvent *e);

    // ------Блок переменных
      //-----Переменные офрмления формы
      QSplitter *mainSplitterWidget;

private:
    Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H
Записан
JamS007
Гость
« Ответ #5 : Декабрь 31, 2009, 13:48 »

Решение нашел.

Код:
ui->marksWidget->setVerticalScrollBar(ui->namesWidget->verticalScrollBar());

работает на ура.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Декабрь 31, 2009, 13:52 »

а вот реакция компилятора

#include <QScrollBar>
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Dendy
Гость
« Ответ #7 : Декабрь 31, 2009, 14:01 »

Мне кажется что таким образом из namesWidget скроллбар исчезнет. Поправьте, если ошибаюсь.
Записан
JamS007
Гость
« Ответ #8 : Декабрь 31, 2009, 14:19 »

действительно, оказалось, что исчез Улыбающийся Будем поправлять.
Записан
Dendy
Гость
« Ответ #9 : Декабрь 31, 2009, 14:42 »

Попробуйте как посоветовал Пастор, добавить #include <QScrollBar> в mainwindow.cpp. Компилятор видит этот тип только по предварительному обьявлению, следовательно без этого инклуда он не знает, что QScrollBar наследуется от QObject, вот и выдаёт ошибку.
Записан
JamS007
Гость
« Ответ #10 : Декабрь 31, 2009, 14:50 »

Всё. Разобрался. Всем большое спасибо.

P.S. Метод с #include <QScrollBar> действительно решил проблему.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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