【发布时间】:2011-05-14 08:18:03
【问题描述】:
我的 Qt 应用程序有一个 SQLite 数据库。我认为将数据库添加为资源是合乎逻辑的。
我无法让我的应用使用嵌入式资源进行编译。
connection.h
#ifndef CONNECTION_H
#define CONNECTION_H
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
static bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":/data/ShippingData.db3");
if (!db.open())
{
QMessageBox::critical(0, QObject::tr("Database Error"), db.lastError().text());
return false;
}
return true;
}
#endif // CONNECTION_H
assets.qrc
<RCC>
<qresource prefix="/data">
<file>ShippingData.db3</file>
</qresource>
</RCC>
我现在的sqlite数据库是这样的
app.pro
file.h
file.cpp
data/ShippingData.db3
构建问题(来自 Qt Creator)
No rule to make target `../TimePlotter/Shipping.db3', needed by `debug/qrc_assets.cpp'. Stop.
我尝试更改我的资源布局,因为它来自编译器不会进入数据库所在的 data/ 文件夹的消息。我在这个资源文件中遇到了完全相同的构建问题
<RCC>
<qresource>
<file>data/ShippingData.db3</file>
</qresource>
</RCC>
TimePlotter.pro
#-------------------------------------------------
#
# Project created by QtCreator 2010-11-21T03:18:17
#
#-------------------------------------------------
QT += core gui
TARGET = TimePlotter
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
time.cpp \
clients.cpp \
printTime.cpp
HEADERS += mainwindow.h \
time.h \
clients.h \
printTime.h \
connection.h
FORMS += mainwindow.ui \
time.ui \
clients.ui \
printTime.ui
RESOURCES += \
assets.qrc
【问题讨论】:
-
能否请您也发布您的 .pro 文件?这将有助于理解。谢谢。
-
另外,你的 assets.qrc 文件在你的项目树中的什么位置?
-
我添加了.pro文件,谢谢帮助
-
发布 .pro 内容是否回答了您的第二个问题?在实际目录中 assets.qrc 位于项目文件夹的根目录中。 (即 .cpp、.h 和 .ui 文件与 .qrc 位于同一文件夹中)
标签: c++ qt sqlite embedded-resource