Название: Изменение переменых в родительском классе Отправлено: FalloutST от Апрель 07, 2017, 01:05 В одном классе есть фунция: void init();
В нем же переменная int val; объявлены в *.h этот клас вызывает новое окно, из которого я получаю новое значение val как мне знаписать его для дальнейшего использования в родительском классе. -------------------------- вопрос окончен, теперь лирика--------------------------- дочерним классом я посылаю сигнал на запуск фунции обработки ряда переменных и каково было мое удивление когда переменные не изменились вовсе. работал я так: Код: class MainWindow : public QMainWindow { в дочернем классе: Код: include mainwindow.h Мне все равно нужно изменять значения не работающее(работающее но меняющее его в пределах дочернего класса) mw.qbytearray.append(newval); Ребята как это сделать, я в & и * уже перестал понимать... или это просто третий час чтения абсолютной ереси не потеме.... Название: Re: Изменение переменых в родительском классе Отправлено: Apktyc от Апрель 07, 2017, 09:29 Хотелось бы больше кода, но мой внутренний телепат подозревает, что Вы меняете val у объекта только что созданного на стеке, и не имеющего никакого отношения к окну приложения, которое у Вас есть.
Если Вы наследуетесь от MainWindow - то имеете прямой доступ к переменной val дочернего. Или вам нужен указатель на необходимый Вам объект класса MainWindow (т.е. MainWindow* mw). Название: Re: Изменение переменых в родительском клас Отправлено: FalloutST от Апрель 07, 2017, 10:04 Код: class MainWindow : public QMainWindow Код: class showlist : public qDialog { ->>> это проблемные места которые не могу решить... все это находится в разных файлах... Название: Re: Изменение переменых в родительском классе Отправлено: Apktyc от Апрель 07, 2017, 11:02 Чтобы заработал Ваш код, поступать надо примерно так:
Код: class showlist : public qDialog { Код: hardware = new showlist; Но в целом, такое решение выглядит попросту ужасно. Уж лучше будет передавать необходимые данные через механизм сигнал-слот. Код: class showlist : public qDialog { И соответствующий этому сигналу принимающий слот у MainWindow сам модифицирует свои внутренние переменные. Название: Re: Изменение переменых в родительском классе Отправлено: FalloutST от Апрель 07, 2017, 12:10 hardware->mw = this;
то, что надо!!!! обрадовало несказанно!!! Данная операция мне понадобится еще не в одном случае, и лучшее, что я нашел это использовать именно такой вариант обработчика. Понимаю выглядит ужасно, но обработка происходит из разных фунций в разных файлах по одному сигналу, нужно общее место для хранения данных... Я выписал не конкретный код а только необходимое для понимания процесса... ~10% замыленные глаза просто не догодались передать ссылку на работающий класс.... СПАСИБО |