Size: a a a

2021 March 18

A

Artem in Qt
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.

Из-за чего может такая ошибка возникать? Где-то есть не закрытое подключение?
источник

RG

Renat Garaev in Qt
Artem
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.

Из-за чего может такая ошибка возникать? Где-то есть не закрытое подключение?
Дважды базу открываете
источник

A

Artem in Qt
Renat Garaev
Дважды базу открываете
Как то можно проверить открыта она или нет? Проверил isOpen, всегда false
источник

RG

Renat Garaev in Qt
Artem
Как то можно проверить открыта она или нет? Проверил isOpen, всегда false
В другом потоке выбираете данные
источник

A

Artem in Qt
Renat Garaev
В другом потоке выбираете данные
Нет, в потоках нет работы с базой данных
источник

СС

Сергей Семёнкин... in Qt
имя соеднинения используется дважды, вот ты и получаешь предупреждение
источник

A

Artem in Qt
Сергей Семёнкин
имя соеднинения используется дважды, вот ты и получаешь предупреждение
Так я закрываю прошлое соединение
источник

A

Artem in Qt
Все, пофиксил
источник

A

Artem in Qt
Всем спасибо
источник

СС

Сергей Семёнкин... in Qt
что возвращает QSqlDatabase::contains ( conn_name)
источник

RG

Renat Garaev in Qt
Artem
Все, пофиксил
резюме свое скажите, что было, 2ное соедиение и вызов?
источник

A

Artem in Qt
Renat Garaev
резюме свое скажите, что было, 2ное соедиение и вызов?
Да, повторное соединение создавалось, а в доке написано «If there already exists a database connection called connectionName, that connection is removed.». Решение простое, так как соедение открывается глобальное, то можно получить его через QSqlDatabase::database()
конечный вариант:
db = QSqlDatabase::database();
   if (!db.isOpen()) {
       db = QSqlDatabase::addDatabase("QSQLITE");
       db.setDatabaseName(QString("%1/config.db").arg(path));
       db.open();
   }
источник

РБ

Руслан Багров... in Qt
Sergey eSKon
вы неправильно вопрос ставите. Вам не разбивать нужно, а переносить бизнес-логику в другие классы. Если вы оставите структуру той же, но тупо разобъёте файл - это только хуже будет
Да, Вы правы
(Прошу прошения, что не сразу ответил)
Как мне лучше это сделать, если мне необходимо обращаться к графическому интерфейсу?
источник

S

Sergey eSKon in Qt
Руслан Багров
Да, Вы правы
(Прошу прошения, что не сразу ответил)
Как мне лучше это сделать, если мне необходимо обращаться к графическому интерфейсу?
для этого и существует механизм сигналы/слоты.  Бизнес-логика что-т делает и выдает сигналы, интерфейс на них реагирует. Также БЛ реагирует на сигналы из UI
источник

РБ

Руслан Багров... in Qt
Спасибо, попробую
В качестве общего развития, подскажите, пожалуйста, есть ли возможность воспользоваться элементами UI за пределами widget?

@eSKon75
источник

MK

Mikhail Kalugin in Qt
Руслан Багров
Спасибо, попробую
В качестве общего развития, подскажите, пожалуйста, есть ли возможность воспользоваться элементами UI за пределами widget?

@eSKon75
Что такое widget? Как он объявлен?
источник

РБ

Руслан Багров... in Qt
Mikhail Kalugin
Что такое widget? Как он объявлен?
Это файл, в котором автоматически создаётся класс UI при создании приложения
источник

T

TheDoctor in Qt
Руслан Багров
Спасибо, попробую
В качестве общего развития, подскажите, пожалуйста, есть ли возможность воспользоваться элементами UI за пределами widget?

@eSKon75
За пределами класса UI? Передайте указатель на нужный UI обьект за пределы класса.
источник

MK

Mikhail Kalugin in Qt
Руслан Багров
Это файл, в котором автоматически создаётся класс UI при создании приложения
Ну славно. Так вот, пусть растет себе. Главное - руками его не трогай.
источник

S

Sergey eSKon in Qt
Руслан Багров
Это файл, в котором автоматически создаётся класс UI при создании приложения
слушайте, "widget" это просто имя по умолчанию которое вы по какой-то причине не поменяли, не каждый может догадаться о чем речь - не ссылайтесь на это имя в дальнейшем как на что-то общепринятое
источник