Название: Проблема с QMessageBox
Отправлено: mevn от Август 11, 2012, 12:29
Добрый день. Что то совсем сильно запутался. Если в Одном объекте в процедуре //============================================================================= ///Слот обработки сигнала нажатия кнопки удаления считывателя ///\n\n======================================================================\n void DBTSDMgr::slot_del() { ... if (QMessageBox::question(this,"Подтверждение удаления","Вы уверены, что хотите удалить указанную запись?",QMessageBox::Yes|QMessageBox::No,QMessageBox::No)==QMessageBox::No) { return; } ... if(!DBMgr().deleteTSD(id)) { QMessageBox::information(this,"Ошибка","Не удалось удалить запись."); } ... viewData(); ... } Запускается диалог if (QMessageBox::question(this,"Подтверждение удаления","Вы уверены, что хотите удалить указанную запись?",QMessageBox::Yes|QMessageBox::No,QMessageBox::No)==QMessageBox::No) { return; } То программа работает нормально. Если добавить перед этим вопросом строчку - QMessageBox::information(this,"Блабла","блабла"); То программа вылетает напрочь ничего не спрашивая. Если в другом объекте закоментировать процедуры //============================================================================= ///Функция для запуска опроса считывателя ///\n\n======================================================================\n void TSDDeviceTCP::start() {
if (!tcpServer) tcpServer = new QTcpServer(this); // else // QMessageBox::critical(0, "Server send","Ctart" ); // QMessageBox::critical(0, dev_name, QString::number(dev_port));
if (!tcpServer->listen(QHostAddress(dev_name), dev_port) && server_status==0) { _dbg <<"Сервер остановлен"<<std::endl; _jornal << "Сервер остановлен " <<std::endl; _status_line.set("Невозможно открыть порт"); } else { server_status=1; _dbg <<"Сервер запущен"<<std::endl; _jornal << "Сервер запущен " <<std::endl; _status_line.clear("Порт открыт"); connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newuser())); }
/**/ }
//============================================================================= ///Функция для остановки опроса считывателя ///\n\n======================================================================\n void TSDDeviceTCP::stop() {
if(server_status==1) { foreach(int i,SClients.keys()) { QTextStream os(SClients[i]); SClients[i]->close(); SClients.remove(i);
} // disconnect(tcpServer, SIGNAL(newConnection()), this, SLOT(newuser())); tcpServer->close(); tcpServer->killTimer(1); tcpServer = NULL; _dbg <<"Server is stoped"<<std::endl; _jornal << "Server is stoped: " <<std::endl; _status_line.set("Порт закрыт"); server_status=0;
}/**/ } То все работает, не подскажете что с этим можно поделать?
Название: Re: Проблема с QTcpServer
Отправлено: mevn от Август 12, 2012, 09:31
Пока частично решил данную проблему на замену всех QMessageBox::information(this,"Блабла","блабла"); Мессагами QMessageBox::question(this,"Блабла","блабла", QMessageBox::Yes); Но на мой взгляд это плохое решение, и непонятно почему так происходит. Может кто сталкивался с чем то подобным?
Название: Re: Проблема с QMessageBox
Отправлено: Alex Custov от Август 12, 2012, 11:50
у тебя где-то в программе бьётся память, наподобие удаления невалидного уазателя. Прогоняй в valgrind или просматривай код сам.
|