Ситуация такая: в главной форме создается и используется объект базы данных:
C++ (Qt)
QSqlDatabase managerDatabase;
Объекты запросов типа
C++ (Qt)
QSqlQuery query(managerDatabase);
Нормально создаются и исполняются.
Теперь я хочу сделать собственный виджет, где бы использовалась уже подключенная БД.
Объект запросов QSqlQuery должен быть общим, чтобы постоянно память не гонять.
Соответственно, в описании класса имеем
C++ (Qt)
private:
QSqlDatabase* database;
QSqlQuery* query;
Для передачи указателя на подключенную БД в новом виджете я создал следующую функцию:
C++ (Qt)
void wgtManager::prepareDatabase(QSqlDatabase* db)
{
database = db;
query = new QSqlQuery(*db);
}
Эта функция вызывается из кода главной формы в конструкторе, но после создания пользовательского интерфейса (экземпляр пользовательского виджета добавлен в *.ui):
C++ (Qt)
ui->setupUi(this);
ui->wgmManager->prepareDatabase(&managerDatabase);
При попытке использовать query в пользовательском виджете я получаю "QSqlQuery::exec: database not open" в debug-окошке.
Что я упустил? Ведь код выглядит вполне стандартно..