一。 创建MySQL数据库和表:
你可以使用MySQL客户端或者命令行工具来执行以下SQL语句创建数据库和表,并插入随机数据。
CREATE DATABASE IF NOT EXISTS bak_dp; //创建数据库名为bak_db
USE bak_dp;
CREATE TABLE IF NOT EXISTS tem ( //创建表名为tem
id INT AUTO_INCREMENT PRIMARY KEY,
data VARCHAR(255) NOT NULL
);
INSERT INTO tem (data) VALUES
('RandomData1'),
('RandomData2'),
('RandomData3'),
('RandomData4'),
('RandomData5'),
('RandomData6'),
('RandomData7'),
('RandomData8'),
('RandomData9'),
('RandomData10'); //随机加入10个数据
二.创建Qt项目:
你需要安装Qt Creator和Qt的MySQL数据库驱动程序。
在Qt Creator中,创建一个新项目:选择 “应用程序” -> "Qt Widgets 应用程序",然后按照向导指示进行。
.pro 文件 (project_name.pro):
QT += core gui sql //引入QT和SQL模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = project_name
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
.h 文件 (mainwindow.h):
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTimer>
#include <QtSql/QSqlDatabase>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void showData();
private:
Ui::MainWindow *ui;
QTimer *timer;
QSqlDatabase db;
int dataIndex;
};
#endif // MAINWINDOW_H
第一个 .cpp 文件 (main.cpp):
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
第二个 .cpp 文件 (mainwindow.cpp):
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QSqlQuery>
#include <QSqlError>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow), dataIndex(0)
{
ui->setupUi(this);
// 设置数据库
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("bak_dp"); //数据库名
db.setUserName("your_username"); //用户名
db.setPassword("your_password"); //用户密码
// 尝试打开数据库
if (!db.open()) {
qDebug() << "数据库连接失败: " << db.lastError().text();
return;
}
// 设置计时器以每秒刷新一次数据
timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &MainWindow::showData);
timer->start(1000); // 时间间隔设置为1000毫秒
}
MainWindow::~MainWindow()
{
delete ui;
db.close();
}
void MainWindow::showData()
{
QSqlQuery query("SELECT data FROM tem LIMIT 1 OFFSET " + QString::number(dataIndex));
if (query.next()) {
QString data = query.value(0).toString();
ui->label->setText(data); // 假设你的UI中有一个名为label的标签来显示数据
dataIndex = (dataIndex + 1) % 10; // 循环显示10条数据
} else {
qDebug() << "查询失败: " << query.lastError().text();
}
}
注意:
-
请将
your_username
和your_password
替换为你的MySQL数据库的用户名和密码。 -
以上只是一个简单的示例,实际的项目会更加复杂,需要考虑错误处理、数据库连接的有效性检查、线程安全等。
-
如果你的项目中还包含.ui文件(由Qt Designer创建),它也应该被包括在项目中,但是在这里没有提供。
-
在Mainwindow的UI设计中,你应该有一个Label用于显示数据,本示例代码中默认label对象名为"label"。