Как мне подключить сигнал и слот из 2 объектов, если имена объектов, сигналы и слоты указаны в текстовом файле?
Получение правильных имен объектов не является проблемой, поскольку я могу легко перебирать массив и сравнивать имена с местом в файле, но должен быть какой-то способ, которым я могу вернуть сигнал и слот из файла. и используйте его в функции подключения, например:
connect(rtnObj1(line),SIGNAL(rtnSignal(line)),rtnObj2(line),SLOT(rtnSlot(line)));
где функции rtn возвращают имя объекта / сигнал / слот, а «line» - это текущая строка QString из файла.
Единственный способ, о котором я знаю, - это буквально кодировать каждую комбинацию и сравнивать QStrings с операторами if, но это было бы невероятно утомительно, поскольку количество комбинаций было бы невероятно большим.
Примечание. Вот упрощенный пример, по существу, показывающий, как существует эта проблема.
Кадр 1: 4 QComboBox. Первый и третий содержат имена объектов, второй - сигналы, четвертый - слоты. Каждый элемент в этих списках, конечно, представляет собой QString. Нажатие кнопки добавляет новую строку к файлу, записывая текст, выбранный из каждого поля.
Кадр 2: уже есть необходимые объекты. Читая файл, он сопоставляет объекты, определенные в списке, с уже созданными, и соединяет их, как описывает файл.
Достаточно легко создать объект на основе данных, хранящихся в файле, но как создать / извлечь сигнал и слот из файла?
Изменить: Разве можно так подключиться?
connect(objectA, "", objectB, "");
Поскольку я только что узнал, что мой код будет компилироваться таким образом, однако всякий раз, когда я пытаюсь ввести имена слотов или сигналов, я получаю сообщение об ошибке вроде:
QObject :: connect: используйте макрос SIGNAL для привязки Tile :: clicked