Russian Qt Forum
Ноябрь 23, 2024, 10:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Посыл сигналов между классами  (Прочитано 4517 раз)
dsp
Гость
« : Июнь 09, 2011, 18:51 »

Что-то не пойму, как посылать сигнал между классами.
Хотел вот так сделать:

mainwindow.cpp
Код:
...
connect(nextPhotoAction, SIGNAL(triggered()), SLOT(nextPhoto()));
...


void MainWindow::nextPhoto()
{
    emit dbCreate::writeData();
}

dbCreate.cpp
Код:
void dbCreate::writeData()
{
   чего-то делает
}

но не вышло.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июнь 09, 2011, 18:56 »

Код
C++ (Qt)
dbCreate *obj;
connect(nextPhotoAction, SIGNAL(triggered()), obj, SLOT(writeData()));
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
dsp
Гость
« Ответ #2 : Июнь 09, 2011, 19:07 »

Код
C++ (Qt)
dbCreate *obj;
connect(nextPhotoAction, SIGNAL(triggered()), obj, SLOT(writeData()));

так будет не очень хорошо, т.к. в dbCreate при создании объекта выполняются свои операции. Есть другой класс, в mainwindow.cpp, который в свою очередь подключает dbCreate. придется, видимо так делать.

mainwindow.cpp
Код:
viewChecker = new dbViewer;
connect(nextPhotoAction, SIGNAL(triggered()), viewChecker, SLOT(writeDB()));

dbViewer.cpp
Код:
db = new dbCreate;
connect(а тут чего?, SIGNAL(triggered()), db, SLOT(writeData()));

да и так полная фигня получается
« Последнее редактирование: Июнь 09, 2011, 19:28 от dsp » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Июнь 09, 2011, 19:27 »

Код
C++ (Qt)
viewChecker = new dbViewer;
connect(nextPhotoAction, SIGNAL(triggered()), viewChecker, SIGNAL(mySignal()));
...
db = new dbCreate;
connect(this, SIGNAL(mySignal()), db, SLOT(writeData()));
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
dsp
Гость
« Ответ #4 : Июнь 09, 2011, 19:31 »

Код
C++ (Qt)
viewChecker = new dbViewer;
connect(nextPhotoAction, SIGNAL(triggered()), viewChecker, SIGNAL(mySignal()));
...
db = new dbCreate;
connect(this, SIGNAL(mySignal()), db, SLOT(writeData()));


а как второй connect вызовется? и mySignal будет сигналом какого класса?

« Последнее редактирование: Июнь 09, 2011, 19:35 от dsp » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Июнь 09, 2011, 19:35 »

можно соединять сигналы с сигналами. когда ты нажмешь на nextPhotoAction, viewChecker'у пошлется сигнал mySignal, а он, в свою очередь, вызовет слот writeData() у db
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
dsp
Гость
« Ответ #6 : Июнь 09, 2011, 20:07 »

Спасибо, вроде бы разобрался, если что, напишу...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.393 секунд. Запросов: 23.