Название: Warning при закрытии PG Отправлено: bez_glaz от Февраль 27, 2012, 13:11 Добрый день.
В общем суть такова. Простецкое приложение.Есть форма авторизации, которая должна коннектиться к БД в PG под определённой ролью, исходя из введённых логина и пароля. Есть класс connect в нём в private объявлена переменная Код: QSqlDatabase db; Код: db = QSqlDatabase::addDatabase("QPSQL"); Код: db.close(); Всё работает более чем успешно, НО ... При закрытии приложения пишет Варнинг Код: QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work. Код: Connect::~Connect() Или может как-то вызывать отсоединения в диструкторе формы ?? Название: Re: Warning при закрытии PG Отправлено: mutineer от Февраль 27, 2012, 13:13 а объект класса Connect уничтожается?
Название: Re: Warning при закрытии PG Отправлено: bez_glaz от Февраль 27, 2012, 13:49 а объект класса Connect уничтожается? Хмм... немножко зашёл в тупик. Я в main пишу Код: Autorization * atr = new Autorization(); Вызывается ли её диструктор ???В отладке не стопится брейк поинт в диструкторе формы. Название: Re: Warning при закрытии PG Отправлено: mutineer от Февраль 27, 2012, 13:51 Autorization это форма?
Родителей у объектов не видать, значит удалять их нужно самому Название: Re: Warning при закрытии PG Отправлено: bez_glaz от Февраль 27, 2012, 14:09 Autorization это форма? Хммм... И как тогда быть ? Ведь я в main объявлял оба объекта. :-\Родителей у объектов не видать, значит удалять их нужно самому Название: Re: Warning при закрытии PG Отправлено: mutineer от Февраль 27, 2012, 14:12 Autorization это форма? Хммм... И как тогда быть ? Ведь я в main объявлял оба объекта. :-\Родителей у объектов не видать, значит удалять их нужно самому Название: Re: Warning при закрытии PG Отправлено: bez_glaz от Февраль 27, 2012, 14:15 Autorization это форма? Хммм... И как тогда быть ? Ведь я в main объявлял оба объекта. :-\Родителей у объектов не видать, значит удалять их нужно самому Это понятно )))) Где удалить ? Объявлял то я в main динамически. Или как - то можно объект удалить из самого себя ? Но ведь тогда указатель созданный в main останется :-\ Название: Re: Warning при закрытии PG Отправлено: mutineer от Февраль 27, 2012, 14:16 Как это где? В конце main, например
Название: Re: Warning при закрытии PG Отправлено: bez_glaz от Февраль 27, 2012, 14:22 Как это где? В конце main, например Эммм.. Я их создам, а затем тупо сразу удалю ?? Приложение будет работать ?? Или я что-то не понимаю?Название: Re: Warning при закрытии PG Отправлено: Bepec от Февраль 27, 2012, 14:25 Эммм.. когда кончается функция Main - у тебя закрывается программа.
Когда ты создаёшь в main класс аля "QMainWindow", то там процесс передаёт управление ему. Когда QMainWindow закрывается - то опять начинается функция main с момента вызова цикла событий exec(). Вот после него удаляй что хошь ;) Название: Re: Warning при закрытии PG Отправлено: bez_glaz от Февраль 27, 2012, 14:37 Код: return a.exec(); Название: Re: Warning при закрытии PG Отправлено: mutineer от Февраль 27, 2012, 14:40 Код: return a.exec(); неправильно - return прекращает выполнение функции и все, что за ним, не выполняется Название: Re: Warning при закрытии PG Отправлено: bez_glaz от Февраль 27, 2012, 14:50 Код: return a.exec(); неправильно - return прекращает выполнение функции и все, что за ним, не выполняется Ваще запутался, в каком именно месте в main мне удалить мои объекты ???? Название: Re: Warning при закрытии PG Отправлено: mutineer от Февраль 27, 2012, 14:52 Код: return a.exec(); неправильно - return прекращает выполнение функции и все, что за ним, не выполняется Ваще запутался, в каком именно месте в main мне удалить мои объекты ???? Есть два варианта - быстрый и правильный. Быстрый: Код
Правильный: Выучить язык, на котором пишешь Название: Re: Warning при закрытии PG Отправлено: bez_glaz от Февраль 27, 2012, 15:07 Код: return a.exec(); неправильно - return прекращает выполнение функции и все, что за ним, не выполняется Ваще запутался, в каком именно месте в main мне удалить мои объекты ???? Есть два варианта - быстрый и правильный. Быстрый: Код
Правильный: Выучить язык, на котором пишешь Спс. Как бы я это и делаю в данный момент ) Просто пост Цитировать Эммм.. когда кончается функция Main - у тебя закрывается программа. меня и смутил, что имел ввиду автор ?То же самое что и Вы предложили ?Когда ты создаёшь в main класс аля "QMainWindow", то там процесс передаёт управление ему. Когда QMainWindow закрывается - то опять начинается функция main с момента вызова цикла событий exec(). Вот после него удаляй что хошь Ммм если не затруднит дайте наводочку на "правильный метод". Всё таки как я понял, быстро не есть хорошо. А хотелось бы чтоб всё идеально работала, да и понять принципы, что к чему. Название: Re: Warning при закрытии PG Отправлено: mutineer от Февраль 27, 2012, 15:15 Автор имеет в виду то же самое. Правильный метод точно такой же, но проистекает из твоих знаний языка)) Выучи C++, чтобы не писать глупости вида
return ...; delete ...; Название: Re: Warning при закрытии PG Отправлено: Bepec от Февраль 27, 2012, 15:21 Согласен, невнятно для новичка объяснил ;)
Название: Re: Warning при закрытии PG Отправлено: bez_glaz от Февраль 27, 2012, 15:29 Всем спасибо. Самоучка просто, первый серьёзный проект сам пишу с нуля, надо чтоб всё было учтено. Башка пухнит от потока новой информации, хотя и Qt по сути тот же C++...но не всё так просто.
Название: Re: Warning при закрытии PG Отправлено: mutineer от Февраль 27, 2012, 15:32 Всем спасибо. Самоучка просто, первый серьёзный проект сам пишу с нуля, надо чтоб всё было учтено. Башка пухнит от потока новой информации, хотя и Qt по сути тот же C++...но не всё так просто. Qt это расширение плюсов, но ты ведь и плюсов не знаешь, так что все равно с начала все учить:) Название: Re: Warning при закрытии PG Отправлено: lit-uriy от Февраль 29, 2012, 16:29 bez_glaz подобное сообщение появляется если у тебя где-нибудь табличная модель связана с БД, а у неё внутри есть запрос (QSqlQuery), в таком случае обычно помогает установка несуществующей таблицы, тогда активного запроса не будет.
П.С. db.close() часто не спасает от подобного сообщения Название: Re: Warning при закрытии PG Отправлено: bez_glaz от Март 01, 2012, 09:29 bez_glaz подобное сообщение появляется если у тебя где-нибудь табличная модель связана с БД, а у неё внутри есть запрос (QSqlQuery), в таком случае обычно помогает установка несуществующей таблицы, тогда активного запроса не будет. У меня у модели и в них естественно есть запросы SQL. Как понимать "установка несуществующей таблицы".П.С. db.close() часто не спасает от подобного сообщения |