QT是一个跨平台的应用程序开发框架,主要用于开发图形界面程序。SQLite是一款轻量级的关系型数据库管理系统,被广泛应用于移动设备和嵌入式系统等领域。在Linux系统中,使用QT和SQLite可以快速开发出具有图形界面且具备轻量级数据库功能的应用程序。下面将介绍如何在Linux系统中快速学会使用QT和SQLite数据库。
1. 安装QT和SQLite
在Linux系统中,可以通过命令行工具来安装QT和SQLite。具体的安装命令如下:
“`
sudo apt-get install qt5-default
sudo apt-get install libsqlite3-dev
“`
这两条命令将会安装QT和SQLite所需的头文件和库文件。安装完成后,即可开始编写应用程序。
2. 编写QT界面程序
在QT中,UI文件使用.ui的文件格式进行存储。通过QT提供的可视化编辑器,我们可以轻松地创建和编辑UI文件。下面是一个简单的例子:
在QT中新建工程,选择QT Widgets Application即可。新建工程后,我们可以在左侧Project中的Forms文件夹下,看到一个名为mnwindow.ui的文件。打开该文件,我们可看到QT可视化编辑器界面。
在编辑器界面中,通过拖拉组件到界面中,我们可以非常直观地设计出需要的用户界面。这里,我们将设计一个简单的窗口,包含一个Label、一个LineEdit和一个PushButton组件。然后在应用程序中,通过代码来实现按钮点击事件的响应。代码如下:
“`c++
#include
#include
int mn(int argc, char *argv[])
{
QApplication app(argc, argv);
QMnWindow *window = new QMnWindow();
QStatusBar *statuar = new QStatusBar(window);
QLabel *label = new QLabel(“Name: “, window);
QLineEdit *lineedit = new QLineEdit(window);
QPushButton *button = new QPushButton(“OK”, window);
QObject::connect(button, &QPushButton::clicked, [&]() {
QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);
db.setDatabaseName(“database.db”);
db.open();
QSqlQuery query(db);
query.exec(“CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)”);
QString name = lineedit->text();
query.exec(QString(“INSERT INTO people (name) VALUES (‘%1’)”).arg(name));
db.close();
label->setText(“Data updated successfully”);
statuar->showMessage(“Data updated successfully”, 3000);
});
QWidget *central = new QWidget(window);
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(label);
layout->addWidget(lineedit);
layout->addWidget(button);
layout->setAlignment(label, Qt::AlignLeft);
layout->setAlignment(lineedit, Qt::AlignLeft);
layout->setAlignment(button, Qt::AlignLeft);
central->setLayout(layout);
window->setCentralWidget(central);
window->setStatusBar(statuar);
window->show();
return app.exec();
}
“`
在代码中,我们首先创建了窗口和所需组件。随后,我们定义了一个Lambda表达式,用于实现按钮点击事件的响应。在Lambda表达式中,我们首先通过QSqlDatabase类定义了一个可以连接SQLite数据库的对象db。然后,我们通过setDatabaseName函数来设置数据库的名称。这里我们创建了一个名为database.db的数据库。接着,通过db对象的open函数来打开数据库连接。
在打开数据库连接后,我们使用QSqlQuery类定义一个SQL查询对象query。然后,我们通过query对象的exec函数来执行SQL查询语句。这里,我们使用了CREATE TABLE语句创建一个名为people的数据表,并定义了id和name两个字段。字段id是主键字段,使用AUTOINCREMENT自动增长。字段name是一个文本字段,用于存储人名。
在SQL查询执行完成后,我们通过lineedit组件的text函数获取用户输入的人名。然后,通过QString类的arg函数来生成一个SQL插入语句。这里使用了%1作为占位符,表示要插入的人名。在生成SQL插入语句后,我们通过query对象的exec函数执行该SQL语句,将人名数据插入到数据库中。
在完成数据更新操作后,我们设置label组件的文本为“Data updated successfully”,并在状态栏中显示类似的信息。通过show函数来显示窗口。
3. 编译和运行程序
在完成代码编写后,我们需要使用QT提供的qmake工具将QT工程文件转换为makefile文件,然后使用make命令进行编译。具体步骤如下:
我们需要在QT中打开工程文件。然后,在左侧Project中选择Build,点击Add Kit,在弹出的窗口中选择Desktop QT 5.15.0 GCC 64bit。如果没有这个选项,可以点击Manage Kits,点击Qt Versions右上角的Add按钮,添加该选项。
接着,我们需要在左侧Projects选项中,选择Build Settings,将Build Directory改为工程所在目录下的build目录。然后,在Terminal里面运行命令:
“`
qmake -makefile
make
“`
完成编译后,我们可以在build目录中找到生成的可执行文件。将其在终端中运行,即可看到QT界面程序的运行效果。
4. 结论
相关问题拓展阅读:
- 如何在Linux下用C语言操作数据库sqlite3
- 如何在Linux下用C/C++语言操作数据库sqlite3
- qt怎样创建数据库以及数据库的操作
如何在Linux下用C语言操作数据库sqlite3
下面我们看看怎么在C语言中向数据库插入数据。
好的,我们现编辑一段c代码,取名为 insert.c
// name: insert.c
// This prog is used to test C/C++ API for sqlite3 .It is very simple,ha !
// Author : zieckey All rights reserved.
// data : 2023/11/18
#include
#include
#include “sqlite3.h”
#define _DEBUG_
int main( void )
{
sqlite3 *db=NULL;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open(“zieckey.db”, &db); //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
if( rc )
{
fprintf(stderr, “Can’t open database: %s
“, sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
else printf(“You have opened a sqlite3 database named zieckey.db successfully!
Congratulations! Have fun ! ^-^
“);
//创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中
char *sql = ” CREATE TABLE SensorData(
ID INTEGER PRIMARY KEY,
SensorID INTEGER,
SiteNum INTEGER,
Time VARCHAR(12),
SensorParameter REAL
);” ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
#ifdef _DEBUG_
printf(“%s
“,zErrMsg);
#endif
//插入数据
sql = “INSERT INTO “SensorData” VALUES( NULL , 1 , 1 , ”, 18.9 );” ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
sql = “INSERT INTO “SensorData” VALUES( NULL , 1 , 1 , ”, 16.4 );” ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
sqlite3_close(db); //关闭数据库
return 0;
}
好的,将上述代码写入一个文件,并将其命名为 insert.c 。
解释:
sqlite3_exec的函数原型说明如下:
int sqlite3_exec(
sqlite3*,
const char *sql,
sqlite_callback,
void *,
char **errms
g
);
编译:
# gcc insert.c -lsqlite3 -L/usr/local/sqlite3/lib -I/usr/local/sqlite3/include
insert.c:28:21: warning: multi-line string literals are deprecated
#
执行
# ./a.out
./a.out: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory
#
同样的情况,如上文处理方法:
# export LD_LIBRARY_PATH=/usr/local/sqlite3/lib:$LD_LIBRARY_PATH
# ./a.out
You have opened a sqlite3 database named zieckey.db successfully!
Congratulations! Have fun ! ^-^
(null)
(null)
(null)
#
运行成功了,好了,现在我们来看看是否插入了数据
# /usr/local/sqlite3/bin/sqlite3 zieckey.db
SQLite version 3.3.8
Enter “.help” for instructions
sqlite> select * from SensorData;
1|1|1||18.9
2|1|1||16.4
如何在Linux下用C/C++语言操作数据库sqlite3
1. 说明 这里我们假设你已经编译好了sqlite的库文件 : libsqlite3.a libsqlite3.la libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6 pkgconfig 和可执行文件 : sqlite3 我们再假设你的sqlite3的安装目录在 /usr/local/sqlite3 目录下。 如果不是,我们可以这样做,将你的安装文件复制到 /usr/local/sqlite3 这个目录, 这样我们好在下面的操作中更加统一,从而减少出错的概率 例如:# cp -rf sqlite-3.3.8-ix86/ /usr/local/sqlite3 这里假设 /home/sqlite-3.3.8-ix86/ 是你的安装目录,也就是说你的sqlite原来就是安装在这里 这样之后,我们的sqlite3的库文件目录是:/usr/local/sqlite3/lib 可执行文件 sqlite3 的目录是: /usr/local/sqlite3/bin 头文件 sqlite3.h 的目录是: /usr/local/sqlite3/include 好拉,现在开始我们的Linux下sqlite3编程之旅。 2. 开始 这里我们现在进行一个测试。 现在我们来写个C/C++程序,调用 sqlite 的 API 接口函数。 下面是一个C程序的例子,显示怎么使用 sqlite 的 C/C++ 接口. 数据库的名字由之一个参数取得且第二个参数或更多的参数是 SQL 执行语句. 这个函数调用sqlite3_open() 在 16 行打开数据库,并且sqlite3_close() 在 25 行关闭数据库连接。 # vi opendbsqlite.c 按下i 键切换到输入模式,输入下列代码:// name: opendbsqlite.c // This prog is used to test C/C++ API for sqlite3.It is very simple,ha! // Author : zieckey All rights reserved. // data : 2023/11/13 #include #include int main( void ) { sqlite3 *db=NULL; char *zErrMsg = 0; int rc; //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件 rc = sqlite3_open(“zieckey.db”, &db); if( rc ) { fprintf(stderr, “Can’t open database: %s “, sqlite3_errmsg(db)); sqlite3_close(db); exit(1); } else printf(“You have opened a sqlite3 database named zieckey.db successfully! Congratulations! Have fun ! ^-^ “); sqlite3_close(db); //关闭数据库 return 0; } 退出,保存。(代码输入完成后,按下 Esc 键,然后输入: :wq ,回车就好拉) 好拉,现在编译:# gcc opendbsqlite.c -o db.out 或者遇到这样的问题:# gcc opendbsqlite.c -o db.out opendbsqlite.c:11:21: sqlite3.h: 没有那个文件或目录 opendbsqlite.c: In function `main’: opendbsqlite.c:19: `sqlite3′ undeclared (first use in this function) opendbsqlite.c:19: (Each undeclared identifier is reported only once opendbsqlite.c:19: for each function it appears in.) opendbsqlite.c:19: `db’ undeclared (first use in this function) 这是由于没有找到头文件的原因。 也许会碰到类似这样的问题:# gcc opendbsqlite.c -o db.out /tmp/ccTkItnN.o(.text+0x2b): In function `main’: : undefined reference to `sqlite3_open’ /tmp/ccTkItnN.o(.text+0x45): In function `main’: : undefined reference to `sqlite3_errmsg’ /tmp/ccTkItnN.o(.text+0x67): In function `main’: : undefined reference to `sqlite3_close’ /tmp/ccTkItnN.o(.text+0x8f): In function `main’: : undefined reference to `sqlite3_close’ collect2: ld returned 1 exit status 这是个没有找到库文件的问题。 下面我们着手解决这些问题。
qt怎样创建数据库以及数据库的操作
qt可以实现连接各种数据库,这里介绍qt自带的一种数据库(Qsqlite)
#include
#include
#include
#include
#include
#include
#include
staticboolcreateConnection()
{QSqlDatabasedb=QSqlDatabase::addDatabase(“QSQLITE”);
db.setDatabaseName(“mytest.db”);
if(!db.open())
returnfalse;
QSqlQueryquery;
//query.exec(QObject::tr(“createtablestudent(idintprimarykey,namevchar)”));
//query.exec(QObject::tr(“insertintostudentvalues(0,’刘’)”));
////query.exec(QObject::tr(“insertintostudentvalues(1,’刚’)”));
//query.exec(QObject::tr(“insertintostudentvalues(2,’红’)”));
//query.prepare(“insertintostudentvalues(?,?)”);
//
//通过下面这段代码可以实现向数据库插入变量
//
QVariantListages;
intx1,x2,x3,x4;
x1=12;
x2=13;
x3=14;
x4=15;
ages
query.addBindValue(ages);
QVariantListnames;
names
query.addBindValue(names);
if(!query.execBatch())//进行批处理,如果出错就输出错误
qDebug()
returntrue;
}
#endif//DATABASE_H
然后用QSqlTableModel实现数据库数据显示
关于linux下qt的sqlite数据库教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。