Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/40: Рейтинг темы: голосов - 40, средняя оценка - 4.73
0 / 0 / 1
Регистрация: 23.02.2017
Сообщений: 11

Ошибки в файле moc при попытке соединить сигнал со слотом

15.09.2019, 12:38. Показов 8152. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь соединить сигнал со слотом. В основном выводе пишет QObject::connect: No such signal Form::sendData() in ..\untitled2\mainwindow.cpp:21. Через брейк поинт попал в файл новой формы moc_form.cpp и обнаружил следующие ошибки:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void Form::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
    moc_form.cpp:79:72: warning: redundant parentheses surrounding declarator
    moc_form.cpp:80:67: error: no member named 'move' in namespace 'std'
 
void *Form::qt_metacast(const char *_clname)
    moc_form.cpp:116:21: error: cannot initialize object parameter of type 'QWidget' with an expression of type 'Form'
 
int Form::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
    moc_form.cpp:121:20: error: cannot initialize object parameter of type 'QWidget' with an expression of type 'Form'
    moc_form.cpp:126:32: error: cannot initialize a parameter of type 'QObject *' with an rvalue of type 'Form *'
    moc_form.cpp:73:40: note: passing argument to parameter '_o' here
 
QString Form::sendData(QString _t1)
    moc_form.cpp:140:73: error: no member named 'addressof' in namespace 'std'
    moc_form.cpp:141:5: error: no matching function for call to 'activate'
    qobjectdefs.h:401:17: note: candidate function not viable: no known conversion from 'Form *' to 'QObject *' for 1st argument
    qobjectdefs.h:402:17: note: candidate function not viable: no known conversion from 'Form *' to 'QObject *' for 1st argument
    qobjectdefs.h:400:17: note: candidate function not viable: requires 3 arguments, but 4 were provided
Файлы главной формы (на форме listWidget и кнопка)
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include "form.h"
 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
 
private slots:
    void recieveData(QString);
 
    void on_pushButton_clicked();
 
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
 
void MainWindow::on_pushButton_clicked()
{
    Form *add1 = new Form;
    add1->show();
    QObject::connect(add1, SIGNAL(sendData()), this, SLOT(recieveData(QString str)));
}
 
void MainWindow :: recieveData(QString str){
    QString lst = str;
 
    ui->listWidget->addItem(lst);
}
Файлы второй формы (на форме lineEdit и кнопка)
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// h
#ifndef FORM_H
#define FORM_H
 
#include <QWidget>
 
namespace Ui {
class Form;
}
 
class Form : public QWidget
{
    Q_OBJECT
 
public:
    explicit Form(QWidget *parent = nullptr);
    ~Form();
 
private slots:
    void on_pushButton_clicked();
 
 
signals:
    QString sendData(QString);
 
private:
    Ui::Form *ui;
};
 
#endif // FORM_H
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//cpp
#include "form.h"
#include "ui_form.h"
 
Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);
}
 
Form::~Form()
{
    delete ui;
}
 
void Form::on_pushButton_clicked()
{
    emit sendData(ui->lineEdit->text()); // вызываем сигнал, в котором передаём введённые данные
    close();
}
Вложения
Тип файла: 7z build-untitled2-Desktop_x86_windows_msvc2019_pe_32bit-Debug.7z (735.6 Кб, 0 просмотров)
Тип файла: 7z untitled2.7z (4.2 Кб, 0 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.09.2019, 12:38
Ответы с готовыми решениями:

Как соединить сигнал с "неизвестными" аргументами со слотом?
Как можно соединить &quot;неизвестный&quot; сигнал со слотом, у которого все принимаемые параметры - QVariant? Есть такая функция: void...

Как соединить сигнал класса MainWindow openFile c слотом класса MainController openFile?
класс главного окна class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ...

Сигнал не коннектится со слотом
Всем привет. Начал изучать Qt, решил опробовать механизм сигналов и слотов: #include &lt;QtCore&gt; #include &lt;QtGui&gt; #include...

6
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
15.09.2019, 13:27
Цитата Сообщение от Zorroh772 Посмотреть сообщение
обнаружил следующие ошибки:
Самая главная ошибка в вашем коде - несовпадение сигнатур методов сигнала и слота. У вас метод сигнала без параметра, а метод слота с параметром. Так делать нельзя, можно наоборот - метод сигнала с параметром, а слота без параметров.

Добавлено через 10 минут
Добавлю: сам метод сигнала определен верно, а вот соединение сигнала и слота с ошибкой.
0
0 / 0 / 1
Регистрация: 23.02.2017
Сообщений: 11
15.09.2019, 14:07  [ТС]
Таким образом?

C++ (Qt)
1
QObject::connect(&add1, SIGNAL(sendData(QString str)), this, SLOT(recieveData()));
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
15.09.2019, 14:14
Цитата Сообщение от Zorroh772 Посмотреть сообщение
Таким образом?
C++ (Qt)
1
QObject::connect(&add1, SIGNAL(sendData(QString str)), this, SLOT(recieveData(QString str)));
У вас что, в IDE подсказки не работают? Обычно после написания макроса SIGNAL/SLOT IDE сама выводит список имеющихся, вам достаточно выбрать нужный.
0
0 / 0 / 1
Регистрация: 23.02.2017
Сообщений: 11
15.09.2019, 16:41  [ТС]
Слот сразу выводит, а сигнал не выводит

Добавлено через 2 часа 5 минут
все ошибки решились заменой сборщика. Был msvc, стал MinGW, но по прежнему не видит сигнал
C++ (Qt)
1
2
3
QObject::connect: No such signal Form::sendData(QString str) in 
QObject::connect:  (sender name:   'Form')
QObject::connect:  (receiver name: 'MainWindow')
0
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
15.09.2019, 19:09
Zorroh772, Замени:
C++
1
2
 signals:
    QString sendData(QString);
На
C++
1
2
 signals:
    void sendData(QString);
0
285 / 174 / 62
Регистрация: 13.03.2019
Сообщений: 419
19.09.2019, 17:05
C++ (Qt)
1
QObject::connect(&add1, SIGNAL(sendData(QString str)), this, SLOT(recieveData(QString str)));
Убираем оба str и будет вам счастье:

C++ (Qt)
1
QObject::connect(&add1, SIGNAL(sendData(QString)), this, SLOT(recieveData(QString )));
Вообще-то, об этом в документации написано.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2019, 17:05
Помогаю со студенческими работами здесь

Не конектится сигнал со слотом
у меня есть слот void MainWindow::comboSelectItem(int b) { } я его связываю с сигналом connect(ui-&gt;comboBox,...

Как QAction соединить со слотом?
Как QAction соединить со слотом? И можно ли создать QActionGroup и соединить его с одним слотом в котором бы описывалось бы действия для...

Связать сигнал еще не существующего объекта со слотом
connect(progress, SIGNAL(close()), SLOT(showHidden()));В конструкторе MainWindow хочу связать сигнал еще не созданного виджета...

Как связать сигнал QListWidget со слотом QTextEdit ?
В виджете QListWidget есть список элементов из QMap::key(), в виджете QTextEdit хочу получать значение QMap::volume(), соответствующее...

Программа неожиданно завершилась. Когда соединяю сигнал со слотом
В конструкторе прописал: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru