crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Связать сигнал со слотом, не принадлежащим объекту?
jojahti
  опции профиля:
сообщение 12.9.2009, 17:31
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 28.8.2009
Пользователь №: 1030

Спасибо сказали: 0 раз(а)




Репутация:   0  


А если программка совсем небольшая, и функция не принадлежит никакому объекту? Каким образом можно привязать функцию к сигналу?

Ну тоесть:
//============================
Цитата
void function() // описание функции

int main() {
// создаются объекты интерфейса
//
QObject::connect(button, SIGNAL(clicked()), /*что ставить здесь???*/, SLOT(function()));
}

//============================

А компилятор говорит, что такое ему не катит, и просит указать объект. :mellow:

Сообщение отредактировал jojahti - 12.9.2009, 17:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 12.9.2009, 17:42
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


jojahti,
кому вот этот метод пренадлежит

function()

то и ставь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 12.9.2009, 17:48
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(jojahti @ 12.9.2009, 18:31) *
А если программка совсем небольшая, и функция не принадлежит никакому объекту? Каким образом можно привязать функцию к сигналу?

Никаким.
Испускать и принимать сигналы могут только объекты, причем объекты должны быть от классов наследников QObject.

Сообщение отредактировал BRE - 12.9.2009, 17:49
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
jojahti
  опции профиля:
сообщение 12.9.2009, 18:10
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 28.8.2009
Пользователь №: 1030

Спасибо сказали: 0 раз(а)




Репутация:   0  


BRE
Цитата
Никаким.
Испускать и принимать сигналы могут только объекты, причем объекты должны быть от классов наследников QObject.

Ааааа.

А вот если немного поизвращаться и создать структуру слотов, унаследованную от QObject? Я создал ). Соответственно в качестве источника слота указывал свою структуру, то бишь её объект. В функцию я передавал адрес виджета, с которым и извращался внутри функции.

Но это дело не фурычит - зараза. Хотя компилятор ошибок не даёт.

Почему?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 12.9.2009, 18:23
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(jojahti @ 12.9.2009, 19:10) *
Но это дело не фурычит - зараза. Хотя компилятор ошибок не даёт.
Почему?

В структуре Q_OBJECT определен?
Покажи код.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.9.2009, 23:25
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Глянь: Использование Сигналов без Слотов
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 13.9.2009, 0:10
Сообщение #7


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(jojahti @ 12.9.2009, 19:10) *
А вот если немного поизвращаться и создать структуру слотов, унаследованную от QObject?

если только ради эксперимента..
а так уже бы создал класс и не заморочивался.:)
тем более что ты уже его создал только написал struct а не class .
:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
jojahti
  опции профиля:
сообщение 13.9.2009, 17:26
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 28.8.2009
Пользователь №: 1030

Спасибо сказали: 0 раз(а)




Репутация:   0  


kwisp
Цитата
тем более что ты уже его создал только написал struct а не class .

Ну по идее это же не для объектов, а для хранения, потому логичнее структурой назвать. :rolleyes:

ViGOur
Глянь: Использование Сигналов без Слотов

Выдаёт загадочную ошибку:
Undefined reference to "vtable for myslots"

Короче я лучше свой виджет с интерфейсом создам. 8)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.9.2009, 18:16
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(jojahti @ 13.9.2009, 21:26) *
Выдаёт загадочную ошибку:
ты qmake не забыл вызвать после изменений?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.4.2024, 1:22