Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: [Qt 4.5.0] QItemSelection и Qt::QueuedConnection
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
SABROG
Попытался сделать соединение как Qt::QueuedConnection:

        connect(tbvList->selectionModel(),
                SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
                SLOT(tbvList_selChanged(const QItemSelection &, const QItemSelection &)), Qt::QueuedConnection);


И получил такую ошибку. Чего это он?

QObject::connect: Cannot queue arguments of type 'QItemSelection'
(Make sure 'QItemSelection' is registered using qRegisterMetaType().)


А вдруг мне понадобится такое соединение, чтобы узнать в другом потоке какой итем выбран, там ведь только Qt::QueuedConnection прокатит.
---
Я конечно понимаю, что ошибку можно обойти так:

qRegisterMetatType<QItemSelection>("QItemSelection");


Да и использовать GUI совместно с потоками нежелательно. Но у меня даже цель другая была, не поточная. Просто хотел минимизировать возможное влияние другого QEventLoop'a (навеяло из другой темы). И вот интересно кто недоглядел Qt или я?
---
Документация говорит следующее:

Цитата
Note that if you intend to use the type in queued signal and slot connections or in QObject's property system, you also have to call qRegisterMetaType() since the names are resolved at runtime.

Но QItemSelection врятли можно отнести к custom type. Хотя я и не исключаю того варианта, что сделано это было, чтобы не захламлять массив зарегистрированных типов в Qt, которые могут редко использоваться.
Litkevich Yuriy
QItemSelection - это ГПИ и, возможно, поэтому так происходит.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.