_
July 5, 2020, 11:50 a.m.

Не работают слоты/сигналы

C++, Qt

Помогите разобраться.

  1. MainWindow::on_push_autorisation_clicked() - при нажатии на кнопку отправляется сигнал. В слоте выводим текст и отправляем сигнал дальше. Если не отправлять сигнал все ок работает. Не блочиться гуи и выводится текст. Но если отправить сигнал (раскомментировать) - ничего не выводиться и гуи блокируется, но сигнал вроде как проходит.
  1. signals:
  2. void send_input_data(const std::string&, const std::string&, int);
  3.  
  4. private slots:
  5. void on_push_autorisation_clicked();
  6.  
  7. void MainWindow::on_push_autorisation_clicked()
  8. {
  9. ui->text_output->append(QString("clicked"));
  10. auto logon = ui->logon->text();
  11. auto psw = ui->password->text();
  12. auto room = ui->room_id->text();
  13. ui->text_output->append(QString("send signal"));
  14.  
  15. //emit send_input_data(logon.toStdString(), psw.toStdString(), room.toUInt());
  16. }
  1. connnect работает только если код ниже в одном потоке. как только раскомментирую - не работает. в чем может быть причины?
  1. QObject::connect(&client, SIGNAL(send_text(const std::string&, const std::string&)),
  2. this, SLOT(text_from_client(const std::string&, const std::string&)));
  3. io_service.run();
  4. //std::thread th([&io_service]() { io_service.run(); });
  5. //th.join();
3

Do you like it? Share on social networks!

2
nayk1982
  • July 6, 2020, 3:13 p.m.
  • (edited)

Во-первых, у Вас в сигнале 3 параметра, а в коннекте 2.
Во-вторых, Вы используете устаревший способ connect, поэтому и ошибки не возникает про третий параметр - при этом способе нет проверки.
https://wiki.qt.io/New_Signal_Slot_Syntax/ru

    Алексей Внуков
    • July 6, 2020, 7:16 p.m.
    • (edited)

    и посмотрите работу с потоками в Qt, там подробно описано как передавать данные с одного в потока в другой при помощи сигналов и слотов

      Comments

      Only authorized users can post comments.
      Please, Log in or Sign up
      • Last comments
      • AK
        April 1, 2025, 11:41 a.m.
        Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
      • Evgenii Legotckoi
        March 9, 2025, 9:02 p.m.
        К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
      • VP
        March 9, 2025, 4:14 p.m.
        Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
      • ИМ
        Nov. 22, 2024, 9:51 p.m.
        Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
      • Evgenii Legotckoi
        Oct. 31, 2024, 11:37 p.m.
        Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup