Добрый день!
Решил я на днях попробовать написать свою модель на основе исходников QSqlTableModel.
Скопировал исходники QSqlTableModel, переобозвал QSqlTableModel по своему - EditSqlQueryModel.
Подключил core-private
Компилирую и получаю такую ошибку
C:\Qt\Qt5.4.2\5.4\mingw491_32\include\QtSql\qsqlresult.h:122: ошибка: 'virtual void QSqlResult::detachFromResultSet()' is protected
virtual void detachFromResultSet();
^
Смотрю исходник
class Q_SQL_EXPORT QSqlResult
{
...
protected:
virtual void detachFromResultSet();
...
Код где вызывается этот метод
bool EditSqlQueryModelPrivate::exec(const QString &stmt, bool prepStatement,
const QSqlRecord &rec, const QSqlRecord &whereValues)
{
if (stmt.isEmpty())
return false;
// lazy initialization of editQuery
if (editQuery.driver() != db.driver())
editQuery = QSqlQuery(db);
// workaround for In-Process databases - remove all read locks
// from the table to make sure the editQuery succeeds
if (db.driver()->hasFeature(QSqlDriver::SimpleLocking))
const_cast<QSqlResult *>(query.result())->detachFromResultSet();
Как же этот код компилируется в исходниках Qt?
Что сделать, чтобы скомпилировалось?
И еще куча варнингов типа
Z:\Coding\qt\EditSqlQueryModel_Test\editsqlquerymodel.cpp:155: предупреждение: 'EditSqlQueryModel::EditSqlQueryModel(QObject*, QSqlDatabase)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
EditSqlQueryModel::EditSqlQueryModel(QObject *parent, QSqlDatabase db)
^
Как избавиться от этих варнингов?