Russian Qt Forum
Сентябрь 30, 2024, 20:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с QMessageBox  (Прочитано 3279 раз)
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;

    }/**/
}
То все работает, не подскажете что с этим можно поделать?
« Последнее редактирование: Август 12, 2012, 09:38 от mevn » Записан
mevn
Гость
« Ответ #1 : Август 12, 2012, 09:31 »

Пока частично решил данную проблему на замену всех
     QMessageBox::information(this,"Блабла","блабла");
Мессагами
     QMessageBox::question(this,"Блабла","блабла", QMessageBox::Yes);
Но на мой взгляд это плохое решение, и непонятно почему так происходит.
Может кто сталкивался с чем то подобным?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Август 12, 2012, 11:50 »

у тебя где-то в программе бьётся память, наподобие удаления невалидного уазателя. Прогоняй в valgrind или просматривай код сам.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.068 секунд. Запросов: 23.