Здравствуйте, imh0, Вы писали:
I>...
I>I>Application a(argc, argv);
I>a.exec();
I>
I>Честно? Твой ответ вообще не по теме. Мне надо после a.exec() работать, ты мне привел пример того что и так ясно... Но я уже сказал — извини, но таким тоном можешь разговаривать дома. А лучше и там не надо.
Что именно нужно делать "после"? С точки зрения Qt ничего "после" быть не может. Если надо "после" — то в отдельном потоке. А лучше — вот этот весь код с QApplication в отдельный поток. Но я об этом уже писал выше.
S>>Тебе надо Qt хоть немного понять, и чтобы вопрос нормально сформулировать и чтобы ответы понимать.
I>Ага еще раз спасибо )
Если хотите абстрактно от Qt — то вы должны понимать и уметь реализовывать в многопоточной среде такие паттерны как chain of responsibility и producer consumer. Иначе все объяснения бесполезны.
Ваша проблема — вы не можете понять где вам проинициализировать обработчик. Об этом я тоже выше писал — надо понимать что у вас за события. Без этого не получится предметного разговора.
P.S. ко всем участникам темы — давайте не переходить на личности и оскорбления, а то достану банхаммер.
Очень псевдокод:
class Handler : public QObject
{
Q_OBJECT
public:
// ...
void on_my_event()
{
QTimer::singleShot(0, this, &Handler::show_gui);
}
void show_gui()
{
// Создаём окно. Это уже будет вызвано в Qt потоке
}
}
int qt_thread(conditional_variable& cv, Handler *h)
{
QApplication app;
h = new Handler;
h->setParent(&app);
cv.wake_all();
return app.exec();
}
void main_thread()
{
conditional_variable& cv;
Handler *h = nullptr;
std::thread t{&qt_thread, cv, h};
cv.wait();
// Прилетает сигнал - дёргаем наш прокси
h->on_my_event();
}