static void signal_cb(uv_signal_t *handle, int signum) { if (signum == SIGINT || signum == SIGQUIT) { char *name = signum == SIGINT ? "SIGINT" : "SIGQUIT"; logger_log(LOG_INFO, "Received %s, scheduling shutdown...", name); close_signal(); if (concurrency > 1) { struct server_context *servers = handle->data; for (int i = 0; i < concurrency; i++) { struct server_context *server = &servers[i]; uv_async_send(&server->async_handle); } } else { struct server_context *ctx = handle->data; uv_close((uv_handle_t *)&ctx->tcp, NULL); udprelay_close(ctx); } } if (signum == SIGTERM) { logger_log(LOG_INFO, "Received SIGTERM, scheduling shutdown..."); if (daemon_mode) { delete_pidfile(pidfile); } exit(0); } }
// создание окна превью void MainWindow::signal_from_doc(QSqlQueryModel *model, QString name, QString num, QString note, QString date){ // передаём туда название документа, номер, дату и примечание, чтобы вставить их в заголовок талона // а сам список позиций передаём в виде QSqlQueryModel preview = new PrintPreview(model, name, num, note, date); // добавляем созданный виджет в StackedWidget и делаем его активным mwidget->addWidget(preview); mwidget->setCurrentIndex(mwidget->indexOf(preview)); QObject::connect(this->preview, SIGNAL(close_signal()), this, SLOT(preview_closed())); }
// создание окна документа void MainWindow::signal_from_list(int id, QString name, QString num, QString note, QString date){ // такого не может быть, но пусть будет if(!is_connect){ QMessageBox::warning(this, "Странная ошибка", "Таблица ещё не создана"); return; } doc = new DocTable(id, name, num, note, date); // добавляем созданный виджет в StackedWidget и делаем его активным mwidget->addWidget(doc); mwidget->setCurrentIndex(mwidget->indexOf(doc)); QObject::connect(this->doc, SIGNAL(close_signal()), this, SLOT(doc_closed())); connect(this->doc, SIGNAL(print_preview(QSqlQueryModel*, QString, QString, QString, QString)), this, SLOT(signal_from_doc(QSqlQueryModel*, QString, QString, QString, QString))); }