Отправляет email-рассылки с помощью сервиса Sendsay

Контекстное меню в Qt

Привет всем!!! :-)

Есть такая проблема в Qt.

Создаю контекстное меню таким вот способом:

QPopupMenu *context_menu = *new* QPopupMenu(0);

KActionCollection *collection = *new* KActionCollection(*this*);

KAction *copyAct = *new* KAction(i18n("&Copy to phone"), "editcopy", "",
*this*, *SLOT*(copy_file()), collection, "copy");

copyAct->plug(context_menu);

context_menu->exec(event->globalPos());

qApp->processEvents();

*delete* context_menu;

qApp->processEvents();

После его вызова и запуска слота блокируются все другие сигналы и слоты
до тех пор, пока не выполнится данный слот.

Как исправить эту ситуацию?

Спасибо

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 27704; Возраст листа: 1129; Участников: 1708
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/584241

Ответить   Sun, 27 Aug 2006 21:59:16 +0400 (#584241)

 

Ответы:

On Sunday 27 August 2006 20:59, Роман wrote:

I am the "ILOVEGNU" signature virus. Just copy me to your signature.
This email was infected under the terms of the GNU General Public License.

Software is like sex: it's better when it's free Linus Torvalds

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 27705; Возраст листа: 1130; Участников: 1708
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/584321

Ответить   Поветкин Константин Mon, 28 Aug 2006 00:40:41 +0300 (#584321)

 

Поветкин Константин wrote:

А никак. Это механизм работы Qt. Пока Вы не вернете управление в главный
событийный цикл, все будет заблокировано. Если Ваш слот работает
достаточно долго, то его придется запускать в отдельной нитке.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 27707; Возраст листа: 1130; Участников: 1707
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/584431

Ответить   Mon, 28 Aug 2006 12:37:14 +0400 (#584431)

 

Andrej Soloviev wrote:

Дело в том, что этот же слот может вызываться другим механизмом:
drag&drop. В этом случае вызов qApp->processEvents() приводит к
обработке всех событий в очереди. А вот при вызове слота через
контекстное меню этот трюк не проходит.

В итоге получается, что если слот вызывается через виджет, то он
блокирует все остальные события.

Так ли я понимаю?

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 27710; Возраст листа: 1130; Участников: 1707
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/584523

Ответить   Mon, 28 Aug 2006 20:59:56 +0400 (#584523)

 

Роман wrote:

Я так глубоко не копал (насчет drag&drop), но похоже, что так.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 27712; Возраст листа: 1130; Участников: 1707
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/584527

Ответить   Mon, 28 Aug 2006 19:03:43 +0400 (#584527)