Russian Qt Forum

Qt => Вопросы новичков => Тема начата: dsp от Июня 09, 2011, 18:51



Название: Посыл сигналов между классами
Отправлено: dsp от Июня 09, 2011, 18:51
Что-то не пойму, как посылать сигнал между классами.
Хотел вот так сделать:

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


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

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

но не вышло.


Название: Re: Посыл сигналов между классами
Отправлено: kambala от Июня 09, 2011, 18:56
Код
C++ (Qt)
dbCreate *obj;
connect(nextPhotoAction, SIGNAL(triggered()), obj, SLOT(writeData()));


Название: Re: Посыл сигналов между классами
Отправлено: dsp от Июня 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()));

да и так полная фигня получается


Название: Re: Посыл сигналов между классами
Отправлено: kambala от Июня 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()));


Название: Re: Посыл сигналов между классами
Отправлено: dsp от Июня 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 будет сигналом какого класса?



Название: Re: Посыл сигналов между классами
Отправлено: kambala от Июня 09, 2011, 19:35
можно соединять сигналы с сигналами. когда ты нажмешь на nextPhotoAction, viewChecker'у пошлется сигнал mySignal, а он, в свою очередь, вызовет слот writeData() у db


Название: Re: Посыл сигналов между классами
Отправлено: dsp от Июня 09, 2011, 20:07
Спасибо, вроде бы разобрался, если что, напишу...