LINUX.ORG.RU

Сбор мусора в QT


0

0

Пишу следующий код, который работает как надо. Проблема в том, что при выходе из программы глубоко в диструкторе QWidget'a вылетает с segmenatation fault :( Исходник создания диалога:


void maskEdit::createKeyboard()
{
  QPushButton* pb,*numbt[10] = {0};
  QHBoxLayout* hbox;

  m_pKeyboard = new QFrame( this , "keyboard" , WType_Popup );
  m_pKeyboard->setFrameStyle( QFrame::WinPanel | QFrame::Raised );

  QVBoxLayout* vbox = new QVBoxLayout( m_pKeyboard , 3 );
  vbox->setResizeMode( QLayout::Fixed );
  //  
  //line edit
  m_pEdit = new QLineEdit( m_pKeyboard );
  vbox->addWidget( m_pEdit );

  hbox = new QHBoxLayout();
  hbox->setResizeMode( QLayout::Fixed );

  //move keyb left
  m_btLeft = new QPushButton( "<<" , m_pKeyboard );
  m_btLeft->setFixedWidth( 30 );
  connect(m_btLeft , SIGNAL( clicked() ) , this , SLOT( OnLeft()));
  hbox->addWidget( m_btLeft );

  //move keyb right
  m_btRight = new QPushButton( ">>" , m_pKeyboard );
  m_btRight->setFixedWidth( 30 );
  connect(m_btRight , SIGNAL( clicked() ) , this , SLOT( OnRight()));
  hbox->addWidget( m_btRight );

  //clear button
  pb = new QPushButton( tr("Clear") , m_pKeyboard );
  pb->setFixedWidth( 60 );
  connect(pb , SIGNAL( clicked() ) , this , SLOT( OnClear()));
  hbox->addWidget( pb );

  vbox->addLayout( hbox );

  QString nm;

  for( int i =0 ; i< 10; i++ )
    {
      if( !(i%4) )
	{
	  if( i )
	    vbox->addLayout( hbox );

	  hbox = new QHBoxLayout();
	  hbox->setResizeMode( QLayout::Fixed );
	}

      nm.setNum( i == 9 ? 0: i + 1 );
      numbt[i] = new QPushButton( nm  , m_pKeyboard );
      numbt[i]->setFixedWidth( 30 );
  
      hbox->addWidget( numbt[i] );
    }
  vbox->addLayout( hbox );

  connect(numbt[0] , SIGNAL( clicked() ) , this , SLOT( OnBut1()));
  connect(numbt[1] , SIGNAL( clicked() ) , this , SLOT( OnBut2()));
  connect(numbt[2] , SIGNAL( clicked() ) , this , SLOT( OnBut3()));
  connect(numbt[3] , SIGNAL( clicked() ) , this , SLOT( OnBut4()));
  connect(numbt[4] , SIGNAL( clicked() ) , this , SLOT( OnBut5()));
  connect(numbt[5] , SIGNAL( clicked() ) , this , SLOT( OnBut6()));
  connect(numbt[6] , SIGNAL( clicked() ) , this , SLOT( OnBut7()));
  connect(numbt[7] , SIGNAL( clicked() ) , this , SLOT( OnBut8()));
  connect(numbt[8] , SIGNAL( clicked() ) , this , SLOT( OnBut9()));
  connect(numbt[9] , SIGNAL( clicked() ) , this , SLOT( OnBut0()));

  vbox->activate();
}
anonymous

линковать с efence'ом, потом gdb в руки и вперёд, по этим исходникам сказать что-то определённое нельзя

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.