Есть два класса, пусть будет Форма 1 и Форма 2, который созданы в Qt desinger. Я хочу их завязать между собой.
в заголовочный файл Формы 1 подключаю заголовок формы 2, делаю указатель Form2 *test;
в самой же форме создаю test = new Form2();
Всё работает, теперь можно добавить кнопку и переходить на Форму 2 или передавать какие либо данные из Формы 1 в Форму 2.
НО! Если я хочу подключить Форму 3 и добавить в заголовок форму 2 и попытаться сделать вызов Формы 2, то получаю ошибки "непонятный тип".
Добавлял в заголовочные файлы дополнительные строки class Form2;
Всё компилируется, но при этом программа просто выдает критическую ошибку.
Схема такая, если я двигаюсь по формам в одном направлении, то все работает.
1->2->3->..->10
Если, я пытаюсь двигаться в разных направлениях.
1->2->3->4->2 = Не работает.
1->2->3->1 = Не работает.
1->2->3->4->1 = Не работает.
Для двухсторонней передачи данных между объектами (тем более между несколькими объектами) лучше не использовать передачу указателя на соседа, а пользоваться механизмом сигналов и слотов. При это connect
нужно будет делать только в одном окне из пары и отпадет необходимость в перекрестных включениях заголовочных файлов
Допустим, мы имеем две формы - Form1 и Form2. В обоих классах описываем сигналы для отправки данных:
signals:
void sendData(QVariant variant);
и слоты для получения данных:
public slots:
voiв recieveData(QVariant variant);
В конструкторе Form1 соединяем сигналы отправки данных со слотами получения (допустим, что объект класса Form2 объявлен в классе Form1 и называется form2):
connect(this, SIGNAL(sendData(QVariant), form2, SLOT(recieveData(QVariant)); //отправка данных из Form1 в Form2
connect(form2, SIGNAL(sendData(QVariant), this, SLOT(recieveData(QVariant)); //отправка данных обратно из Form2 в Form1
Теперь если мы в Form1 испустим сигнал с какими-то данными, в Form2 будет вызывана функция получения данных: emit sendData(QVariant("MyCoolData");
И наоборот, для пересылки данных из Form2 в Form1 испускаем сигнал из Form2 аналогичным способом.
Будьте внимательны, чтобы испускание сигналов не привело к бесконечному цикличному вызову слотов.
Подключение дополнительных окон делается по тому же принципу - объявляем сигналы для отправки и слоты для получения в обоих классах, подключение делаем в том, в котором является "родителем".
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть код программы, которая позволяет ввести динамический массив, а затем 1Упорядочивает элементы массива по возрастанию
Мне нужно, чтобы в случае неверного ввода password запрашивало password до тех пор пока не будет password верен
Нужно написать функцию, которая с помощью рекурсии могла бы найти введенное значение, без рекурсии вроде бы как сделалВот код
"Реализуйте АТД “стек” на основе массива фиксированного размера для элементов, являющихся односвязными списками целых чисел (те