Russian Qt Forum
Ноябрь 25, 2024, 08:55
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Синхронизация двух таблиц
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Синхронизация двух таблиц (Прочитано 6096 раз)
Evgeniya
Гость
Синхронизация двух таблиц
«
:
Июль 21, 2009, 07:49 »
Всем здраствуйте!!!
У меня есть одна формочка с таблицей и при двойном щелчке по строчке таблицы выскакивает другая формочка с таблицей, с данными соответствующими этой строчке...И вот я хочу, чтобы при двйном щелчке первый раз выскакивала эта вторая форма и в последующем,чтобы двойной щелчок больше не обрабатывался и при одинарном щелчке менялись просто данные в таблице на второй форме...И вот вопрос, как же сделать, чтобы на двойной щелчок таблица реагировала только один раз, а все дальнейшее время толко на одинарный и этот первый раз она бы не реагировала на одинарный???просто у меня такое ощущение, что при двойном щелчке срабатывают оба слота(для двойного и одинарного щелчка)
Записан
Karl-Philipp
Гость
Re: Синхронизация двух таблиц
«
Ответ #1 :
Июль 21, 2009, 07:55 »
попробуй использовать disconnect (для разъединения сингала и слота) в теле слота, который вызывается.
Цитировать
bool QObject::disconnect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method ) [static]
Disconnects signal in object sender from method in object receiver. Returns true if the connection is successfully broken; otherwise returns false.
Записан
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: Синхронизация двух таблиц
«
Ответ #2 :
Июль 21, 2009, 08:00 »
Цитата: Evgeniya от Июль 21, 2009, 07:49
просто у меня такое ощущение, что при двойном щелчке срабатывают оба слота(для двойного и одинарного щелчка)
вот неправильное у тебя ощущение, должен срабатывать один слот, который обрабатывает двойной щелчок, если все правильно реализовано.
Записан
Evgeniya
Гость
Re: Синхронизация двух таблиц
«
Ответ #3 :
Июль 21, 2009, 08:35 »
Цитата: terlan от Июль 21, 2009, 07:55
попробуй использовать disconnect (для разъединения сингала и слота) в теле слота, который вызывается.
Цитировать
bool QObject::disconnect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method ) [static]
Disconnects signal in object sender from method in object receiver. Returns true if the connection is successfully broken; otherwise returns false.
Спасибочки!!!Все получилось!!!!Только вот, если закроется эта формочка и придется заново ее создать двойным щелчком...тогда таблица уже не среагирует на него ((((
Цитата: ecspertiza от Июль 21, 2009, 08:00
вот неправильное у тебя ощущение, должен срабатывать один слот, который обрабатывает двойной щелчок, если все правильно реализовано.
А что может быть не правильно реализовано??
В конструкторе два разных сгнала подключаются к двум разным слотам
connect(ui.tableView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(lpu()));
connect(ui.tableView,SIGNAL(clicked(QModelIndex)),this,SLOT(izm()));
Записан
Karl-Philipp
Гость
Re: Синхронизация двух таблиц
«
Ответ #4 :
Июль 21, 2009, 08:38 »
Цитата: Evgeniya от Июль 21, 2009, 08:35
Цитата: terlan от Июль 21, 2009, 07:55
попробуй использовать disconnect (для разъединения сингала и слота) в теле слота, который вызывается.
Цитировать
bool QObject::disconnect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method ) [static]
Disconnects signal in object sender from method in object receiver. Returns true if the connection is successfully broken; otherwise returns false.
Спасибочки!!!Все получилось!!!!Только вот, если закроется эта формочка и придется заново ее создать двойным щелчком...тогда таблица уже не среагирует на него ((((
...
а ты будь хитрее: при создании формочки делай connect, а после двойного щелчка - disconnect
Записан
Evgeniya
Гость
Re: Синхронизация двух таблиц
«
Ответ #5 :
Июль 21, 2009, 08:46 »
Цитата: terlan от Июль 21, 2009, 08:38
а ты будь хитрее: при создании формочки делай connect, а после двойного щелчка - disconnect
ну так втрорая формочка и создается только по двойному щелчку...а если я после этого разъеденю, то двойной щелчок не среагируется и соответственно формочка никогда не создасться
Надо видимо проверять на закрытость формы, типо
if(!form->isVisible()) connect(ui.tableView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(lpu()));
но в каком месте??или так не прокатит??
Записан
Karl-Philipp
Гость
Re: Синхронизация двух таблиц
«
Ответ #6 :
Июль 21, 2009, 08:55 »
Цитата: Evgeniya от Июль 21, 2009, 08:46
Цитата: terlan от Июль 21, 2009, 08:38
а ты будь хитрее: при создании формочки делай connect, а после двойного щелчка - disconnect
ну так втрорая формочка и создается только по двойному щелчку...а если я после этого разъеденю, то двойной щелчок не среагируется и соответственно формочка никогда не создасться
Надо видимо проверять на закрытость формы, типо
if(!form->isVisible()) connect(ui.tableView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(lpu()));
но в каком месте??или так не прокатит??
а что если ловить сигнал закрытия второй формочки и, поймав этот сигнал, сделать в слоте приведенный выше коннект?
Записан
Evgeniya
Гость
Re: Синхронизация двух таблиц
«
Ответ #7 :
Июль 21, 2009, 09:06 »
Цитата: terlan от Июль 21, 2009, 08:55
а что если ловить сигнал закрытия второй формочки и, поймав этот сигнал, сделать в слоте приведенный выше коннект?
можно и так попробовать...это значит надо closeEvent() перегрузить у второй формочки,да???
Хотя я вставила
if(!zak->isVisible())
connect(ui.tableView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(lpu()));
в слот,который обрабатывает одинарный щелчок
и все нормально работает))) И все потому, как мне кажется, что при двойном щелчке сигнал с одинарным щелчком тоже реагирут...
Записан
ритт
Гость
Re: Синхронизация двух таблиц
«
Ответ #8 :
Июль 21, 2009, 09:10 »
Цитата: Evgeniya от Июль 21, 2009, 09:06
И все потому, как мне кажется, что при двойном щелчке сигнал с одинарным щелчком тоже реагирут...
если правильно помню, так оно и есть.
Записан
Evgeniya
Гость
Re: Синхронизация двух таблиц
«
Ответ #9 :
Июль 21, 2009, 09:16 »
Цитата: Константин от Июль 21, 2009, 09:10
Цитата: Evgeniya от Июль 21, 2009, 09:06
И все потому, как мне кажется, что при двойном щелчке сигнал с одинарным щелчком тоже реагирут...
если правильно помню, так оно и есть.
помоему при первом нажатии и втором отпускании срабатывает этот сигнал:
clicked(QModelIndex)
Записан
Evgeniya
Гость
Re: Синхронизация двух таблиц
«
Ответ #10 :
Июль 21, 2009, 14:00 »
видимо нужно как-то сделать так чтобы при двойном щелчке не вызывались события mousePressEvent ( QMouseEvent * event ) и mouseReleaseEvent ( QMouseEvent * event )...это вообще возможно так сделать???
Записан
Evgeniya
Гость
Re: Синхронизация двух таблиц
«
Ответ #11 :
Июль 21, 2009, 15:30 »
Все проблема решена...вместо сигнала
clicked(QModelIndex) использовать pressed(QModelIndex)
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...