crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> передача по указателю между формами
Гость_mishe4ka_*
сообщение 23.1.2015, 14:23
Сообщение #1





Гости








    


Есть две формы. Родительская и дочерняя. Сделано в редакторе форм.(все наследуетя от QObject) Открываю одну форму ,там кнопочка. По кнопочке кляц - вторая открылась. Там все просто. Делал сотню раз и все работало. Дальше идем. значения для второй формы передаю из родительской по указателю, т.е. есть структура со значениями ,инициализирую ее (там все нормально. проверял.лежат нули)

//Cлот  задания параметров дочерней формы 
void analiz_obj::on_sat_epr_pushButton_clicked()
{

    epr_dialog *epr_sat = new epr_dialog(this);
  


   //передача значений по указателю
    epr_sat->rcs_ptr = &(rcs_par_temp);
    //здесь все передалось правильно    !!!!!!!!!!!!!!!!!!!!
    qDebug("%x",&rcs_par_temp);
    qDebug("%x",epr_sat->rcs_ptr);
     //---------------------------------------------------
    // при нажатии на кнопку ОК
    if (epr_sat->exec() == QDialog::Accepted)
    {
        rcs_par_temp = *epr_sat->rcs_ptr;
      

    }
}


отлавливаю в дочернем виджете showevent для инициализации lineeditov
//событие отображение окна 
void epr_dialog::showEvent(QShowEvent */* event*/)
{


  //здесь гадина выводит не правильный адрес.!!!!!!!!!!!!!
  qDebug("%x",rcs_ptr);

    //тип задания параметров
    switch (rcs_ptr->rcs_type)// и здесь соответственно крашится !!!!!!!
    {
      //инициализация лайнэдитов в зависимости от поступившего типа
     }


Программа крашится, хотя должна работать. В других участках подобная передача по указателю работает без проблем. Пересобирал в разных креаторах и т.п. Сейчас на 5.4 и 3.3 сижу.
Как быть сподвижники? Как мне с этим жить? :cray:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 23.1.2015, 20:56
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Как и где объявлено rcs_par_temp?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.1.2015, 15:05
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


как-то всё язык ЦПП в стиле мелкософта напоминает.

сделай для своего диалога метод задающий нужные значения, чтобы всё по человечески и выглядело и работало:
  Dialog *dialog = new Dialog();
  // установка данных
  dialog->setFoo1(...);
  dialog->setFoo2(...);
  ...
  dialog->setFooN(...);
  // или
  dialog->setData(тут объект стрктуры); // или указатель на объект

  if (dialog->exec() == QDialog::Accepted){
    // ...
  }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_mishe4ka_*
сообщение 26.1.2015, 10:03
Сообщение #4





Гости








    


Не помогло((
Вынес в отдельную функцию
epr_sat->setData(epr_sat->rcs_ptr);

падает
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_mishe4ka_*
сообщение 26.1.2015, 11:05
Сообщение #5





Гости








    


 
void epr_dialog::setData(rcs_par *rcs_p)
{
switch (rcs_p->rcs_type)
    {
    case RCS_TYPE_LOG_NORM:
        ui->log_norm_radioButton->setChecked(true);   //сюда отладчик показывает.Здесь крашится
        ui->type_groupBox->setEnabled(false);
        ui->log_normal_groupBox->setEnabled(true);

     //дальше другие case
    
      }
}


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_mishe4ka_*
сообщение 26.1.2015, 11:46
Сообщение #6





Гости








    


Цитата(lanz @ 23.1.2015, 20:56) *
Как и где объявлено rcs_par_temp?

class analiz_obj : public QDialog
{
    Q_OBJECT

public:
  
    rcs_par rcs_par_temp;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 22:37