Есть вот такой код:
test.h
class test : public QObject{
Q_OBJECT
private:
...............................................
public:
test();
public slots:
void txt();
signals:
void ok();
};
test.cpp
test::test(){
................................................
connect(p, SIGNAL(clicked()), SIGNAL(ok()));
}
void test::txt(){
l->setText("ok");
}
main.cpp
....................................................
test a, b;
QObject::connect(&a, SIGNAL(ok()), &b, SLOT(txt()));
QObject::connect(&b, SIGNAL(ok()), &a, SLOT(txt()));
....................................................
Работает он замечательно. Но стоит добавить параметры передачи значений в слот как код перестает работать. Вот пример:
test.h
class test : public QObject{
Q_OBJECT
private:
................................................
public:
test();
public slots:
void txt(QString);
signals:
void ok(QString);
};
test.cpp
test::test(){
......................................................
connect(p, SIGNAL(clicked()), SIGNAL(ok("word")));
}
void test::txt(QString s){
l->setText("ok");
}
main.cpp
....................................................
test a, b;
QObject::connect(&a, SIGNAL(ok()), &b, SLOT(txt()));
QObject::connect(&b, SIGNAL(ok()), &a, SLOT(txt()));
....................................................
Этот код собирается но слот не отрабатывает, и почему то в редакторе строка:
connect(p, SIGNAL(clicked()), SIGNAL(ok("word")));
подчеркивается красным но в консоли ошибок нет. В чем может быть причина?
Ответ kff из комментария:
В connect нельзя задавать параметры слота. Параметр должен приходить из сигнала
Дополню, что если сигнатура сигнала и слота не совпадает, либо необходимо выполнить дополнительные действия, то можно использовать новый синтаксис соединения сигналов и слотов, появившийся в Qt5, и lambda-выражения:
QObject::connect(p, &QPushButton::clicked, this, [this]() {
Q_EMIT ok("word");
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Когда импортирую через инструмент импорт, пишет что нет таблиц, либо они пустыеВозможно, кто-то сталкивался с такого рода импортом и сможет...