![]() |
|
|
![]()
|
|
| xbarmaglot |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
Попробовал следующее
*.h
*.cpp
1. К моменту работы слота объект удален и даже перезаписан для надежности. Но в слот приходит первоначальное значение. Так передача происходит по значению ? 2. Попробовал даже такое QObject::connect(&thread, SIGNAL(send(QString)), &receiver, SLOT(recv(QString))); То же самое. Получается, что тип передаваемых значений вообще не имеет значения ? Все-равно передача по значению, а не по ссылке ? Это сообщение отредактировал(а) xbarmaglot - 31.10.2012, 21:23 |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
да. не помню, но возможно по ссылке будет происходить, если в типе подключения указать DirectConnection (или как оно там правильно пишется?) |
|||
|
||||
| xbarmaglot |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
boostcoder, попробовал создать приемник в самом потоке
так вод delete отработал только после отработки слота. Получается, что был выбран режим с блокированием очереди. Прямой вызов выбирается похоже если оба объекта созданы в одном потоке и emit в этом же потоке (если явно это не указано). P.S. Так получается, что сигнатура методов не имеет значения ? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
||||
|
||||
| xbarmaglot |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
boostcoder, я не к тому как вызвань напрямую, а к тому, что получается нет необходимости парится как передавать
данные в слот - по ссылке или по значению. Moc сам выберет. Кстати- попробовал вывести адреса
Действительно разные адреса |
|||
|
||||
| xbarmaglot |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
и как все-таки - идентичны эти записи или нет ?
QObject::connect(&thread, SIGNAL(send(const QString&)), &receiver, SLOT(recv(const QString&))); QObject::connect(&thread, SIGNAL(send(QString)), &receiver, SLOT(recv(QString))); Похоже, что да. Адреса при DirectConnection одинаковые. Значит передача по ссылке для второй записи, а не по значению... |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
||||
|
||||
| xbarmaglot |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
для того чтоб это понять, нужно понимать как работают сигнал-слоты. как один из намеков, я предложил соединить сигнал со слотом используя DirectConnection, ибо, возможно это подтолкнуло бы тебя к размышлениям. Добавлено через 10 минут и 57 секунд точнее, нужно понять как реализованы сигнал-слоты. и начинать нужно с разбора генерируемого moc-файла. Это сообщение отредактировал(а) boostcoder - 1.11.2012, 10:55 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
||||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |