crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Не закрывается windget и вслед за них - приложение.
Andrewshkovskii
  опции профиля:
сообщение 30.3.2009, 22:04
Сообщение #1


Активный участник
***

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

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




Репутация:   1  


main.cpp

#include <QCleanlooksStyle>
#include <qtextcodec.h>
#include "widget.h"

int main(int argc, char *argv[])
{
QApplication::setStyle(new QCleanlooksStyle);
QApplication a(argc, argv);
QTextCodec *codec = QTextCodec::codecForName("CP1251");
QTextCodec::setCodecForCStrings(codec);
    ColorTestServer *server= new ColorTestServer();
    server->show();
    return server->exec();
}




ColorTestServer.h

#ifndef ColorTestServer_H
#define ColorTestServer_H

#include <QtGui/QWidget>
#include <QtGui/QApplication>
#include <QtGui/QLabel>
#include <QtGui/QMessageBox>
#include <QPushButton>
#include <QFile>
#include <QTextStream>

class ColorTestServer : public QDialog
{
    Q_OBJECT

public:
    ColorTestServer(QWidget *parent = 0);
    ~ColorTestServer();
private :
        QLabel statusLabel;
};

#endif // ColorTestServer_H




ColorTestServer.cpp

#include "widget.h"

ColorTestServer::ColorTestServer(QWidget *parent)
    : QDialog(parent)
{
    this->setWindowTitle("Color Test Server");
    QFile colorDb("Colors1.dat");
     if(!colorDb.open(QIODevice::ReadOnly))
    {
        QMessageBox::critical(this,"Ошибка открытия файла", "Не возможно прочитать файл базы."
                              "\nПриложение будет закрыто.");
        close();
        return;
     }
}

ColorTestServer::~ColorTestServer()
{

}




Проблема : при возникновении ошибки - вызывается QMessageBox, в нем 1 кнопочка, при её нажатии, по-логике, должно приложение закрыватся(т.е. должен виджет закрываться, а с ним и приложение), но этого почему-то не происходит. Я совсем отупел...В чем дело?

Сообщение отредактировал Andrewshkovskii - 30.3.2009, 22:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 30.3.2009, 22:17
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


quitOnLastWindowClosed стоит по-умолчанию, ну попробуй qApp->quit(); Сложно что-либо сказать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 30.3.2009, 22:19
Сообщение #3


Активный участник
***

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

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




Репутация:   1  


Да тут проблема в том, что при нажатии "ОК" формочку показывает, а не скрывает...сейчас попробую. Просто это получаются опять костыли...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 30.3.2009, 23:13
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Еще как вариант, можно установить Qt::WA_DeleteOnClose для виджета
setAttribute(Qt::WA_DeleteOnClose);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 30.3.2009, 23:14
Сообщение #5


Активный участник
***

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

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




Репутация:   1  


ну я пока черезе qApp.quit() решил проблему...всем спасибо..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 8.4.2020, 8:32