2 Star 1 Fork 1

lfy2023/DormitoryManagementSystem

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.cpp.autosave 3.51 KB
一键复制 编辑 原始数据 按行查看 历史
lfy2023 提交于 2024-12-15 00:59 +08:00 . feat:Qt防止程序启动两次功能
#include "mainwindow.h"
#include <QApplication>
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
#include "sqldatabase.h"
#include "logindialog.h"
#include "dialogloginsignup.h"
#include "Head.h"
#include <QPair>
#if defined Q_OS_WIN32 //for win
#include <windows.h>
bool checkOnly()
{
// 创建互斥量
HANDLE m_hMutex = CreateMutex(NULL, FALSE, L"fortest_abc123" );
// 检查错误代码
if (GetLastError() == ERROR_ALREADY_EXISTS) {
// 如果已有互斥量存在则释放句柄并复位互斥量
CloseHandle(m_hMutex);
m_hMutex = NULL;
// 程序退出
return false;
}
else
return true;
}
#endif
// 连接数据库
bool connectDatabase();
// 执行查询
void queryTableDatas(SqlDatabase* db, const QString &tableName);
int main(int argc, char *argv[])
{
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));
// QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
// Q_INIT_RESOURCE(wisdpsclient);
QApplication a(argc, argv);
//检查程序是否 已经启动过
if(checkOnly()==false)
return 0;
// 连接数据库
if(false == connectDatabase()) {
// 结束程序
return 0;
}
MainWindow w;
QString userID, userStatus;
#if 1
// 登录
{
DialogLoginSignUp login;
// QString user, pwd;
QObject::connect(&login, &DialogLoginSignUp::sendData, [&](QPair<QString, QString> data){
userID = data.first;
userStatus = data.second;
w.queryUserAuthority(userID);// 查询用户权限
});
if(login.exec() == QDialog::Accepted)
{
qDebug() << "<登录> 用户:" << userStatus << "成功!";
} else {
// 结束程序
return 0;
}
}
#endif
// 主窗口
w.show();
return a.exec();
}
// 连接数据库
bool connectDatabase()
{
// 获取数据库单例实例并连接到数据库
SqlDatabase* db = SqlDatabase::instance();
if (db->open()) {
// 执行查询
queryTableDatas(db, USER_TABLE);
} else {
qDebug() << "Failed to connect to the database.";
}
// //释放单例
// db->release();
}
// 执行查询
void queryTableDatas(SqlDatabase* db, const QString &tableName)
{
QSqlQuery query = db->executeQuery(QString("SELECT * FROM %1").arg(tableName));
QSqlRecord emptyRec = query.record();
QString recString;
for(int i = 0; i < emptyRec.count(); ++i) {
recString += emptyRec.value(i).toString() + " ";
}
qDebug() << recString;
// 遍历查询结果并输出
while (query.next()) {
int DormID = query.value(0).toInt();
QString Building = query.value(1).toString();
int Floor = query.value(2).toInt();
QString RoomType = query.value(3).toString();
int MaxCapacity = query.value(4).toInt();
int HasBathroom = query.value(5).toInt();
// 使用QString::arg()来格式化输出,每列字段宽度对齐
qDebug() << QString("%1%2%3%4%5%6")
.arg(DormID, 8) // 设置宽度为10字符
.arg(Building, 8) // 设置宽度为10字符,左对齐
.arg(Floor, 8) // 设置宽度为10字符
.arg(RoomType, 8) // 设置宽度为10字符,左对齐
.arg(MaxCapacity, 8)
.arg(HasBathroom, 12);
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/lfy2023/dormitory-management-system.git
git@gitee.com:lfy2023/dormitory-management-system.git
lfy2023
dormitory-management-system
DormitoryManagementSystem
master

搜索帮助