Название: Синхронизация двух таблиц Отправлено: Evgeniya от Июль 21, 2009, 07:49 Всем здраствуйте!!!
У меня есть одна формочка с таблицей и при двойном щелчке по строчке таблицы выскакивает другая формочка с таблицей, с данными соответствующими этой строчке...И вот я хочу, чтобы при двйном щелчке первый раз выскакивала эта вторая форма и в последующем,чтобы двойной щелчок больше не обрабатывался и при одинарном щелчке менялись просто данные в таблице на второй форме...И вот вопрос, как же сделать, чтобы на двойной щелчок таблица реагировала только один раз, а все дальнейшее время толко на одинарный и этот первый раз она бы не реагировала на одинарный???просто у меня такое ощущение, что при двойном щелчке срабатывают оба слота(для двойного и одинарного щелчка) Название: Re: Синхронизация двух таблиц Отправлено: Karl-Philipp от Июль 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. Название: Re: Синхронизация двух таблиц Отправлено: ecspertiza от Июль 21, 2009, 08:00 просто у меня такое ощущение, что при двойном щелчке срабатывают оба слота(для двойного и одинарного щелчка) вот неправильное у тебя ощущение, должен срабатывать один слот, который обрабатывает двойной щелчок, если все правильно реализовано. Название: Re: Синхронизация двух таблиц Отправлено: Evgeniya от Июль 21, 2009, 08:35 попробуй использовать 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(ui.tableView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(lpu())); connect(ui.tableView,SIGNAL(clicked(QModelIndex)),this,SLOT(izm())); Название: Re: Синхронизация двух таблиц Отправлено: Karl-Philipp от Июль 21, 2009, 08:38 попробуй использовать 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. ... Название: Re: Синхронизация двух таблиц Отправлено: Evgeniya от Июль 21, 2009, 08:46 а ты будь хитрее: при создании формочки делай connect, а после двойного щелчка - disconnect :) ну так втрорая формочка и создается только по двойному щелчку...а если я после этого разъеденю, то двойной щелчок не среагируется и соответственно формочка никогда не создастьсяНадо видимо проверять на закрытость формы, типо if(!form->isVisible()) connect(ui.tableView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(lpu())); но в каком месте??или так не прокатит?? Название: Re: Синхронизация двух таблиц Отправлено: Karl-Philipp от Июль 21, 2009, 08:55 а ты будь хитрее: при создании формочки делай connect, а после двойного щелчка - disconnect :) ну так втрорая формочка и создается только по двойному щелчку...а если я после этого разъеденю, то двойной щелчок не среагируется и соответственно формочка никогда не создастьсяНадо видимо проверять на закрытость формы, типо if(!form->isVisible()) connect(ui.tableView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(lpu())); но в каком месте??или так не прокатит?? а что если ловить сигнал закрытия второй формочки и, поймав этот сигнал, сделать в слоте приведенный выше коннект? Название: Re: Синхронизация двух таблиц Отправлено: Evgeniya от Июль 21, 2009, 09:06 а что если ловить сигнал закрытия второй формочки и, поймав этот сигнал, сделать в слоте приведенный выше коннект? можно и так попробовать...это значит надо closeEvent() перегрузить у второй формочки,да???Хотя я вставила if(!zak->isVisible()) connect(ui.tableView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(lpu())); в слот,который обрабатывает одинарный щелчок и все нормально работает))) И все потому, как мне кажется, что при двойном щелчке сигнал с одинарным щелчком тоже реагирут... Название: Re: Синхронизация двух таблиц Отправлено: ритт от Июль 21, 2009, 09:10 И все потому, как мне кажется, что при двойном щелчке сигнал с одинарным щелчком тоже реагирут... если правильно помню, так оно и есть.Название: Re: Синхронизация двух таблиц Отправлено: Evgeniya от Июль 21, 2009, 09:16 И все потому, как мне кажется, что при двойном щелчке сигнал с одинарным щелчком тоже реагирут... если правильно помню, так оно и есть.clicked(QModelIndex) Название: Re: Синхронизация двух таблиц Отправлено: Evgeniya от Июль 21, 2009, 14:00 видимо нужно как-то сделать так чтобы при двойном щелчке не вызывались события mousePressEvent ( QMouseEvent * event ) и mouseReleaseEvent ( QMouseEvent * event )...это вообще возможно так сделать???
Название: Re: Синхронизация двух таблиц Отправлено: Evgeniya от Июль 21, 2009, 15:30 Все проблема решена...вместо сигнала
clicked(QModelIndex) использовать pressed(QModelIndex) |