做网站都需要什么技术,wordpress关联微信,转载到wordpress,厦门建设网站的公司点击 C 语言编程核心突破 快速C语言入门 Qt学习总结 前言二十六 学生信息管理系统插入介绍: QTableView和QSqlTableModelQTableViewQSqlTableModel 程序所用数据库表格程序组成以及界面学生端源码:管理员端源码: 总结 前言
要解决问题: 学习qt最核心知识, 多一个都不… 点击 C 语言编程核心突破 快速C语言入门 Qt学习总结 前言二十六 学生信息管理系统插入介绍: QTableView和QSqlTableModelQTableViewQSqlTableModel 程序所用数据库表格程序组成以及界面学生端源码:管理员端源码: 总结 前言
要解决问题: 学习qt最核心知识, 多一个都不学. 二十六 学生信息管理系统
用Qt实现一个含界面的简单学生信息管理系统, 主要功能: 登录和注册功能系统需要有注册和登录功能学生可以通过注册账号并登录来使用系统。 学生信息录入系统需要支持学生信息的录入和管理包括学生姓名、学号、性别、年龄、联系方式等信息。 学生信息查询系统需要支持信息查询功能学生可以通过查询功能查看自己的个人信息。 学生信息修改学生可以随时修改自己的个人信息如联系方式。 学生成绩管理系统需要支持学生成绩信息的录入和管理包括学生课程成绩等信息。 学生成绩查询学生可以通过系统查询自己的课程成绩。 班级信息管理系统需要支持班级信息的录入和管理包括班级名称、班级简介等信息。 公告管理系统需要支持公告管理功能管理员可以通过系统发布学校或班级的公告通知。 系统安全系统需要有安全保障措施防止信息泄露或被恶意攻击。 界面友好系统需要具备友好的用户界面方便学生和管理员使用。 插入介绍: QTableView和QSqlTableModel
QTableView
QTableView是Qt框架中的一个控件用于显示和编辑过滤表格数据。
它是一个基于模型/视图架构的控件通过使用模型来管理数据视图来显示数据。
以下是使用QTableView的一些常见方法和C函数
设置模型
可以通过setModel()函数将一个QAbstractTableModel类型的模型设置给QTableView控件。
模型通过继承QAbstractTableModel类实现它负责管理数据。
常用的模型类有QStandardItemModel和QSqlTableModel。
设置选择模式
通过setSelectionBehavior()和setSelectionMode()函数设置选择模式用于指定用户如何在表格中选择行或单元格。
其中setSelectionBehavior()函数指定用户选择行或单元格时的行为而setSelectionMode()函数指定用户可以选择的行数。
设置表头
通过setHorizontalHeader()和setVerticalHeader()函数设置自定义表头。
设置单元格属性
可以通过setItemDelegate()函数设置一个委托类以控制QTableView中每个单元格的显示和编辑行为.
隐藏列
通过hideColumn()函数隐藏某一列.
QSqlTableModel
QSqlTableModel是Qt提供的一种数据库模型类用于提供对单表数据的读写、修改、删除等操作。它继承于QAbstractTableModel可以在TableView中使用。
使用方法 首先需要创建数据库连接 QSqlDatabase db QSqlDatabase::addDatabase(QSQLITE);
db.setDatabaseName(myDB.sqlite);
if(!db.open())
{qDebug()open database error!;return ;
}创建QSqlTableModel对象 QSqlTableModel *model new QSqlTableModel(this, db); // this表示当前类是model的父类对象被删除时会自动删除model对象
model-setTable(student);
model-setSort(0, Qt::AscendingOrder); // 按照某一列升序排序
model-select(); // 获取所有数据在TableView中显示数据 ui-tableView-setModel(model);更新表格中第一行的数据 QModelIndex index model-index(0, 1); // 获取第一行第二列的index
model-setData(index, NewValue, Qt::EditRole); // 设置新值
model-submitAll(); // 提交更改常用函数 setTable(const QString tableName)设置表名 setFilter(const QString filter)设置筛选条件 setSort(int column, Qt::SortOrder order)设置排序 select()从表中获取数据 setData(const QModelIndex index, const QVariant value, int role Qt::EditRole)更新数据 insertRows(int row, int count, const QModelIndex parent QModelIndex())插入行数据 removeRows(int row, int count, const QModelIndex parent QModelIndex())删除行数据 setEditStrategy(EditStrategy strategy):置修改策略决定了如何在模型中更改数据并决定在什么条件下提交更改到数据库。 SqlTableModel提供了三种修改策略QSqlTableModel::OnFieldChange默认值当编辑器中的一个单元格的内容改变时自动提交该单元格的内容。 QSqlTableModel::OnRowChange 当编辑器中的一整行的内容改变时自动提交该行的内容。 QSqlTableModel::OnManualSubmit 不自动提交更改需要调用submitAll()函数手动提交。
程序所用数据库表格
需要三个表:
login 这个给管理员使用, 校对管理员密码, 我们这里设置默认用户名和密码都是root, 可以直接在系统下改
CREATE TABLE login(name varchar(16) NOT NULL,stuPassword varchar(16) NOT NULL
);
news 这个是储存班级和学校通知
CREATE TABLE news(theDate date NOT NULL,theTitle varchar(256) NOT NULL,theArtical varchar(2048) NOT NULL
);
student 这个是储存学生信息, 包括学号, 登录密码, 学生信息, 学生成绩
CREATE TABLE student(stuNumber integer UNSIGNED PRIMARY KEY,stuPassword varchar(16) NOT NULL,stuName varchar(16) NOT NULL,sex varchar(8) NOT NULL,birth date NOT NULL,phoneNumber varchar(16),math integer UNSIGNED,chinese integer UNSIGNED,english integer UNSIGNED,physical integer UNSIGNED,chemistry integer UNSIGNED
);
程序组成以及界面
分为学生客户端和管理员端, 使用两个独立程序, 学生端有三个界面, 一个是登录, 另一个是注册, 还有查询. 管理端, 有注册, 成绩录入和信息推送.
学生端源码:
reg.h
#ifndef REG_H
#define REG_H#include QMessageBox
#include QSqlDatabase
#include QSqlQuery
#include QWidgetnamespace Ui
{
class reg;
}class reg : public QWidget
{Q_OBJECTpublic:explicit reg(int stuNum_, QString passNumber_, QSqlDatabase *qdata_,QWidget *parent nullptr);~reg();private slots:void on_cancelButton_clicked();void on_OkButton_clicked();private:Ui::reg *ui;unsigned int stuNum;QString passNumber;QSqlDatabase *qdata;
};#endif // REG_H
student.h
#ifndef STUDENT_H
#define STUDENT_H#include QSqlDatabase
#include QSqlQuery
#include QWidgetnamespace Ui
{
class student;
}class student : public QWidget
{Q_OBJECTpublic:explicit student(unsigned int stuNum_, QSqlDatabase *qdata_,QWidget *parent nullptr);~student();private slots:void on_stuInfButton_clicked();void on_phoneChangeButton_clicked();void on_scoreButton_clicked();void on_newsButton_clicked();private:Ui::student *ui;unsigned int stuNum;QSqlDatabase *qdata;
};#endif // STUDENT_H
Widget.h
#ifndef WIDGET_H
#define WIDGET_H#include reg.h
#include student.h
#include QMessageBox
#include QSqlDatabase
#include QSqlQuery
#include QWidgetQT_BEGIN_NAMESPACE
namespace Ui
{
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots:void on_loginButton_clicked();void on_registButton_clicked();private:Ui::Widget *ui;QSqlDatabase qdata;student *stu nullptr;reg *regist nullptr;
};
#endif // WIDGET_H
main.cpp
#include Widget.h#include QApplication
#include QLocale
#include QTranslatorint main(int argc, char *argv[])
{QApplication a(argc, argv);QTranslator translator;const QStringList uiLanguages QLocale::system().uiLanguages();for (const QString locale : uiLanguages) {const QString baseName Learn_24_ QLocale(locale).name();if (translator.load(:/i18n/ baseName)) {a.installTranslator(translator);break;}}Widget w;w.show();return a.exec();
}
reg.cpp
#include reg.h
#include ui_reg.hreg::reg(int stuNum_, QString passNumber_, QSqlDatabase *qdata_,QWidget *parent): QWidget(parent), ui(new Ui::reg), stuNum(stuNum_), passNumber(passNumber_), qdata(qdata_)
{ui-setupUi(this);ui-stuNumberLineEdit-setText(QString::number(stuNum));
}reg::~reg()
{qDebug() delete reg;delete ui;
}void reg::on_cancelButton_clicked()
{this-close();
}void reg::on_OkButton_clicked()
{QSqlQuery qsql(*qdata);if (ui-stuNameLineEdit-text().isEmpty() ||ui-sexLineEdit-text().isEmpty() ||ui-birthdayLineEdit-text().isEmpty()){QMessageBox::information(this, 提示, 姓名, 性别, 年龄不可为空);}else{if (qsql.exec(QString(INSERT INTO student VALUES (%1, %2, %3, %4, %5, %6, , , , , );).arg(QString::number(stuNum)).arg(passNumber).arg(ui-stuNameLineEdit-text()).arg(ui-sexLineEdit-text()).arg(ui-birthdayLineEdit-text()).arg(ui-phoneLineEdit-text()))){qDebug() OK;}}
}
student.cpp
#include student.h
#include ui_student.hstudent::student(unsigned int stuNum_, QSqlDatabase *qdata_, QWidget *parent): QWidget(parent), ui(new Ui::student), stuNum(stuNum_), qdata(qdata_)
{ui-setupUi(this);QSqlQuery qsql(*qdata);if (qsql.exec(QString(SELECT * FROM student WHERE stuNumber %1;).arg(stuNum))){qsql.next();ui-numberLineEdit-setText(qsql.value(0).toString());ui-nameLineEdit-setText(qsql.value(2).toString());ui-sexLineEdit-setText(qsql.value(3).toString());ui-birthdayLineEdit-setText(qsql.value(4).toString());ui-phoneLineEdit-setText(qsql.value(5).toString());}
}student::~student()
{qDebug() delete student;delete ui;
}void student::on_stuInfButton_clicked()
{QSqlQuery qsql(*qdata);if (qsql.exec(QString(SELECT * FROM student WHERE stuNumber %1;).arg(stuNum))){qsql.next();ui-phoneLineEdit-setText(qsql.value(5).toString());}
}void student::on_phoneChangeButton_clicked()
{QSqlQuery qsql(*qdata);if (qsql.exec(QString(UPDATE student SET phoneNumber %1 WHERE stuNumber %2;).arg(ui-phoneLineEdit-text()).arg(stuNum))){qDebug() OK;}
}void student::on_scoreButton_clicked()
{QSqlQuery qsql(*qdata);if (qsql.exec(QString(SELECT * FROM student WHERE stuNumber %1;).arg(stuNum))){qsql.next();QString result;result 数学:\t;result qsql.value(6).toString();result \n语文:\t;result qsql.value(7).toString();result \n英语:\t;result qsql.value(8).toString();result \n物理:\t;result qsql.value(9).toString();result \n化学:\t;result qsql.value(10).toString();ui-scoreTextEdit-setPlainText(result);}else{qDebug() fail;}
}void student::on_newsButton_clicked()
{QSqlQuery qsql(*qdata);if (qsql.exec(QString(SELECT * FROM news;))){QString result;while (qsql.next()){result qsql.value(0).toString();result \t;result qsql.value(1).toString();result \n;result qsql.value(2).toString();result \n\n;}ui-newsTextEdit-appendPlainText(result);}else{qDebug() fail;}
}
Widget.cpp
#include Widget.h
#include ./ui_Widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);qdata QSqlDatabase::addDatabase(QSQLITE);qdata.setHostName(localhost);qdata.setDatabaseName(E:\\clangC\\learnQT\\Learn_24\\database.db);qdata.setUserName(root);qdata.setPassword(root);if (qdata.open()){qDebug() OK;}else{qDebug() Fail;}
}Widget::~Widget()
{qDebug() delete Widget;delete ui;delete stu;delete regist;
}void Widget::on_loginButton_clicked()
{QSqlQuery qsql(qdata);if (qsql.exec(QString(SELECT * FROM student WHERE stuNumber %1;).arg(ui-stuNumLineEdit-text()))){if (qsql.next()){QString name qsql.value(0).toString();QString password qsql.value(1).toString();qDebug() name password;if (name ui-stuNumLineEdit-text() password ui-passwordLineEdit-text()){qDebug() show stu;stu new student(password.toUInt(), qdata);this-hide();stu-show();}else{qDebug() 学号或密码错误;}}}else{qDebug() Fail;}
}void Widget::on_registButton_clicked()
{QSqlQuery qsql(qdata);bool flag;ui-stuNumLineEdit-text().toUInt(flag);if (flag qsql.exec(QString(SELECT stuNumber FROM student WHERE stuNumber %1;).arg(ui-stuNumLineEdit-text()))){if (qsql.next()){qDebug() ui-stuNumLineEdit-text();QMessageBox::information(this, 提示, 学号重复);}else{qDebug() show reg;regist new reg(ui-stuNumLineEdit-text().toUInt(),ui-passwordLineEdit-text(), qdata);this-hide();regist-show();}}else{qDebug() Fail;}
}
ui_Widget.h
/********************************************************************************
** Form generated from reading UI file Widget.ui
**
** Created by: Qt User Interface Compiler version 6.5.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/#ifndef UI_WIDGET_H
#define UI_WIDGET_H#include QtCore/QVariant
#include QtWidgets/QApplication
#include QtWidgets/QFormLayout
#include QtWidgets/QHBoxLayout
#include QtWidgets/QLabel
#include QtWidgets/QLineEdit
#include QtWidgets/QPushButton
#include QtWidgets/QWidgetQT_BEGIN_NAMESPACEclass Ui_Widget
{
public:QLabel *label;QWidget *layoutWidget;QFormLayout *formLayout;QLabel *label_2;QLineEdit *stuNumLineEdit;QLabel *label_3;QLineEdit *passwordLineEdit;QWidget *layoutWidget1;QHBoxLayout *horizontalLayout;QPushButton *loginButton;QPushButton *registButton;void setupUi(QWidget *Widget){if (Widget-objectName().isEmpty())Widget-setObjectName(Widget);Widget-resize(337, 233);label new QLabel(Widget);label-setObjectName(label);label-setGeometry(QRect(10, 10, 321, 41));label-setStyleSheet(QString::fromUtf8(font: 700 20pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));label-setAlignment(Qt::AlignCenter);layoutWidget new QWidget(Widget);layoutWidget-setObjectName(layoutWidget);layoutWidget-setGeometry(QRect(30, 70, 289, 72));formLayout new QFormLayout(layoutWidget);formLayout-setObjectName(formLayout);formLayout-setContentsMargins(0, 0, 0, 0);label_2 new QLabel(layoutWidget);label_2-setObjectName(label_2);label_2-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(0, QFormLayout::LabelRole, label_2);stuNumLineEdit new QLineEdit(layoutWidget);stuNumLineEdit-setObjectName(stuNumLineEdit);stuNumLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(0, QFormLayout::FieldRole, stuNumLineEdit);label_3 new QLabel(layoutWidget);label_3-setObjectName(label_3);label_3-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(1, QFormLayout::LabelRole, label_3);passwordLineEdit new QLineEdit(layoutWidget);passwordLineEdit-setObjectName(passwordLineEdit);passwordLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(1, QFormLayout::FieldRole, passwordLineEdit);layoutWidget1 new QWidget(Widget);layoutWidget1-setObjectName(layoutWidget1);layoutWidget1-setGeometry(QRect(100, 180, 158, 32));horizontalLayout new QHBoxLayout(layoutWidget1);horizontalLayout-setObjectName(horizontalLayout);horizontalLayout-setContentsMargins(0, 0, 0, 0);loginButton new QPushButton(layoutWidget1);loginButton-setObjectName(loginButton);loginButton-setStyleSheet(QString::fromUtf8(font: 700 12pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout-addWidget(loginButton);registButton new QPushButton(layoutWidget1);registButton-setObjectName(registButton);registButton-setStyleSheet(QString::fromUtf8(font: 700 12pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout-addWidget(registButton);retranslateUi(Widget);QMetaObject::connectSlotsByName(Widget);} // setupUivoid retranslateUi(QWidget *Widget){Widget-setWindowTitle(QCoreApplication::translate(Widget, Widget, nullptr));label-setText(QCoreApplication::translate(Widget, \345\255\246\347\224\237\344\277\241\346\201\257\347\263\273\347\273\237, nullptr));label_2-setText(QCoreApplication::translate(Widget, \345\255\246 \345\217\267, nullptr));label_3-setText(QCoreApplication::translate(Widget, \345\257\206 \347\240\201, nullptr));loginButton-setText(QCoreApplication::translate(Widget, \347\231\273\345\275\225, nullptr));registButton-setText(QCoreApplication::translate(Widget, \346\263\250\345\206\214, nullptr));} // retranslateUi};namespace Ui {class Widget: public Ui_Widget {};
} // namespace UiQT_END_NAMESPACE#endif // UI_WIDGET_H
ui_student.h
/********************************************************************************
** Form generated from reading UI file student.ui
**
** Created by: Qt User Interface Compiler version 6.5.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/#ifndef UI_STUDENT_H
#define UI_STUDENT_H#include QtCore/QVariant
#include QtWidgets/QApplication
#include QtWidgets/QFormLayout
#include QtWidgets/QFrame
#include QtWidgets/QHBoxLayout
#include QtWidgets/QLabel
#include QtWidgets/QLineEdit
#include QtWidgets/QPlainTextEdit
#include QtWidgets/QPushButton
#include QtWidgets/QSpacerItem
#include QtWidgets/QWidgetQT_BEGIN_NAMESPACEclass Ui_student
{
public:QLabel *label;QPlainTextEdit *scoreTextEdit;QPlainTextEdit *newsTextEdit;QFrame *line;QFrame *line_2;QWidget *layoutWidget;QFormLayout *formLayout;QLabel *label_2;QLineEdit *nameLineEdit;QLabel *label_3;QLineEdit *numberLineEdit;QLabel *label_4;QLineEdit *sexLineEdit;QLabel *label_5;QLineEdit *birthdayLineEdit;QLabel *label_6;QLineEdit *phoneLineEdit;QWidget *layoutWidget1;QHBoxLayout *horizontalLayout;QPushButton *stuInfButton;QSpacerItem *horizontalSpacer;QPushButton *phoneChangeButton;QWidget *layoutWidget2;QHBoxLayout *horizontalLayout_2;QLabel *label_7;QSpacerItem *horizontalSpacer_2;QPushButton *scoreButton;QWidget *layoutWidget3;QHBoxLayout *horizontalLayout_3;QLabel *label_8;QSpacerItem *horizontalSpacer_3;QPushButton *newsButton;void setupUi(QWidget *student){if (student-objectName().isEmpty())student-setObjectName(student);student-resize(860, 590);student-setMinimumSize(QSize(860, 590));student-setMaximumSize(QSize(860, 590));label new QLabel(student);label-setObjectName(label);label-setGeometry(QRect(140, 10, 111, 41));label-setStyleSheet(QString::fromUtf8(font: 700 20pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));scoreTextEdit new QPlainTextEdit(student);scoreTextEdit-setObjectName(scoreTextEdit);scoreTextEdit-setGeometry(QRect(420, 60, 431, 231));scoreTextEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));newsTextEdit new QPlainTextEdit(student);newsTextEdit-setObjectName(newsTextEdit);newsTextEdit-setGeometry(QRect(10, 390, 841, 191));newsTextEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));line new QFrame(student);line-setObjectName(line);line-setGeometry(QRect(7, 313, 851, 21));line-setFrameShape(QFrame::HLine);line-setFrameShadow(QFrame::Sunken);line_2 new QFrame(student);line_2-setObjectName(line_2);line_2-setGeometry(QRect(396, 5, 20, 318));line_2-setFrameShape(QFrame::VLine);line_2-setFrameShadow(QFrame::Sunken);layoutWidget new QWidget(student);layoutWidget-setObjectName(layoutWidget);layoutWidget-setGeometry(QRect(10, 60, 381, 186));formLayout new QFormLayout(layoutWidget);formLayout-setObjectName(formLayout);formLayout-setContentsMargins(0, 0, 0, 0);label_2 new QLabel(layoutWidget);label_2-setObjectName(label_2);label_2-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(0, QFormLayout::LabelRole, label_2);nameLineEdit new QLineEdit(layoutWidget);nameLineEdit-setObjectName(nameLineEdit);nameLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));nameLineEdit-setReadOnly(true);formLayout-setWidget(0, QFormLayout::FieldRole, nameLineEdit);label_3 new QLabel(layoutWidget);label_3-setObjectName(label_3);label_3-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(1, QFormLayout::LabelRole, label_3);numberLineEdit new QLineEdit(layoutWidget);numberLineEdit-setObjectName(numberLineEdit);numberLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));numberLineEdit-setReadOnly(true);formLayout-setWidget(1, QFormLayout::FieldRole, numberLineEdit);label_4 new QLabel(layoutWidget);label_4-setObjectName(label_4);label_4-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(2, QFormLayout::LabelRole, label_4);sexLineEdit new QLineEdit(layoutWidget);sexLineEdit-setObjectName(sexLineEdit);sexLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));sexLineEdit-setReadOnly(true);formLayout-setWidget(2, QFormLayout::FieldRole, sexLineEdit);label_5 new QLabel(layoutWidget);label_5-setObjectName(label_5);label_5-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(3, QFormLayout::LabelRole, label_5);birthdayLineEdit new QLineEdit(layoutWidget);birthdayLineEdit-setObjectName(birthdayLineEdit);birthdayLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));birthdayLineEdit-setReadOnly(true);formLayout-setWidget(3, QFormLayout::FieldRole, birthdayLineEdit);label_6 new QLabel(layoutWidget);label_6-setObjectName(label_6);label_6-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(4, QFormLayout::LabelRole, label_6);phoneLineEdit new QLineEdit(layoutWidget);phoneLineEdit-setObjectName(phoneLineEdit);phoneLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(4, QFormLayout::FieldRole, phoneLineEdit);layoutWidget1 new QWidget(student);layoutWidget1-setObjectName(layoutWidget1);layoutWidget1-setGeometry(QRect(50, 270, 301, 36));horizontalLayout new QHBoxLayout(layoutWidget1);horizontalLayout-setObjectName(horizontalLayout);horizontalLayout-setContentsMargins(0, 0, 0, 0);stuInfButton new QPushButton(layoutWidget1);stuInfButton-setObjectName(stuInfButton);stuInfButton-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout-addWidget(stuInfButton);horizontalSpacer new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);horizontalLayout-addItem(horizontalSpacer);phoneChangeButton new QPushButton(layoutWidget1);phoneChangeButton-setObjectName(phoneChangeButton);phoneChangeButton-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout-addWidget(phoneChangeButton);layoutWidget2 new QWidget(student);layoutWidget2-setObjectName(layoutWidget2);layoutWidget2-setGeometry(QRect(420, 10, 421, 39));horizontalLayout_2 new QHBoxLayout(layoutWidget2);horizontalLayout_2-setObjectName(horizontalLayout_2);horizontalLayout_2-setContentsMargins(0, 0, 0, 0);label_7 new QLabel(layoutWidget2);label_7-setObjectName(label_7);label_7-setStyleSheet(QString::fromUtf8(font: 700 20pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_2-addWidget(label_7);horizontalSpacer_2 new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);horizontalLayout_2-addItem(horizontalSpacer_2);scoreButton new QPushButton(layoutWidget2);scoreButton-setObjectName(scoreButton);scoreButton-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_2-addWidget(scoreButton);layoutWidget3 new QWidget(student);layoutWidget3-setObjectName(layoutWidget3);layoutWidget3-setGeometry(QRect(250, 340, 361, 39));horizontalLayout_3 new QHBoxLayout(layoutWidget3);horizontalLayout_3-setObjectName(horizontalLayout_3);horizontalLayout_3-setContentsMargins(0, 0, 0, 0);label_8 new QLabel(layoutWidget3);label_8-setObjectName(label_8);label_8-setStyleSheet(QString::fromUtf8(font: 700 20pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_3-addWidget(label_8);horizontalSpacer_3 new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);horizontalLayout_3-addItem(horizontalSpacer_3);newsButton new QPushButton(layoutWidget3);newsButton-setObjectName(newsButton);newsButton-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_3-addWidget(newsButton);retranslateUi(student);QMetaObject::connectSlotsByName(student);} // setupUivoid retranslateUi(QWidget *student){student-setWindowTitle(QCoreApplication::translate(student, Form, nullptr));label-setText(QCoreApplication::translate(student, \345\255\246\347\224\237\344\277\241\346\201\257, nullptr));label_2-setText(QCoreApplication::translate(student, \345\247\223\345\220\215, nullptr));label_3-setText(QCoreApplication::translate(student, \345\255\246\345\217\267, nullptr));label_4-setText(QCoreApplication::translate(student, \346\200\247\345\210\253, nullptr));label_5-setText(QCoreApplication::translate(student, \345\271\264\351\276\204, nullptr));label_6-setText(QCoreApplication::translate(student, \350\201\224\347\263\273\346\226\271\345\274\217, nullptr));stuInfButton-setText(QCoreApplication::translate(student, \344\277\241\346\201\257\346\237\245\350\257\242, nullptr));phoneChangeButton-setText(QCoreApplication::translate(student, \350\201\224\347\263\273\346\226\271\345\274\217\344\277\256\346\224\271, nullptr));label_7-setText(QCoreApplication::translate(student, \345\255\246\347\224\237\346\210\220\347\273\251, nullptr));scoreButton-setText(QCoreApplication::translate(student, \346\237\245\350\257\242, nullptr));label_8-setText(QCoreApplication::translate(student, \345\255\246\346\240\241\345\205\254\345\221\212, nullptr));newsButton-setText(QCoreApplication::translate(student, \346\237\245\350\257\242, nullptr));} // retranslateUi};namespace Ui {class student: public Ui_student {};
} // namespace UiQT_END_NAMESPACE#endif // UI_STUDENT_H
ui_reg.h
/********************************************************************************
** Form generated from reading UI file reg.ui
**
** Created by: Qt User Interface Compiler version 6.5.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/#ifndef UI_REG_H
#define UI_REG_H#include QtCore/QVariant
#include QtWidgets/QApplication
#include QtWidgets/QFormLayout
#include QtWidgets/QHBoxLayout
#include QtWidgets/QLabel
#include QtWidgets/QLineEdit
#include QtWidgets/QPushButton
#include QtWidgets/QWidgetQT_BEGIN_NAMESPACEclass Ui_reg
{
public:QLabel *label;QWidget *layoutWidget;QFormLayout *formLayout;QLabel *label_2;QLineEdit *stuNameLineEdit;QLabel *label_3;QLineEdit *stuNumberLineEdit;QLabel *label_4;QLineEdit *sexLineEdit;QLabel *label_5;QLineEdit *birthdayLineEdit;QLabel *label_6;QLineEdit *phoneLineEdit;QWidget *layoutWidget1;QHBoxLayout *horizontalLayout;QPushButton *OkButton;QPushButton *cancelButton;void setupUi(QWidget *reg){if (reg-objectName().isEmpty())reg-setObjectName(reg);reg-resize(400, 335);label new QLabel(reg);label-setObjectName(label);label-setGeometry(QRect(120, 10, 171, 41));label-setStyleSheet(QString::fromUtf8(font: 700 20pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));layoutWidget new QWidget(reg);layoutWidget-setObjectName(layoutWidget);layoutWidget-setGeometry(QRect(10, 60, 381, 201));formLayout new QFormLayout(layoutWidget);formLayout-setObjectName(formLayout);formLayout-setContentsMargins(0, 0, 0, 0);label_2 new QLabel(layoutWidget);label_2-setObjectName(label_2);label_2-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(0, QFormLayout::LabelRole, label_2);stuNameLineEdit new QLineEdit(layoutWidget);stuNameLineEdit-setObjectName(stuNameLineEdit);stuNameLineEdit-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(0, QFormLayout::FieldRole, stuNameLineEdit);label_3 new QLabel(layoutWidget);label_3-setObjectName(label_3);label_3-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(1, QFormLayout::LabelRole, label_3);stuNumberLineEdit new QLineEdit(layoutWidget);stuNumberLineEdit-setObjectName(stuNumberLineEdit);stuNumberLineEdit-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));stuNumberLineEdit-setReadOnly(true);formLayout-setWidget(1, QFormLayout::FieldRole, stuNumberLineEdit);label_4 new QLabel(layoutWidget);label_4-setObjectName(label_4);label_4-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(2, QFormLayout::LabelRole, label_4);sexLineEdit new QLineEdit(layoutWidget);sexLineEdit-setObjectName(sexLineEdit);sexLineEdit-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(2, QFormLayout::FieldRole, sexLineEdit);label_5 new QLabel(layoutWidget);label_5-setObjectName(label_5);label_5-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(3, QFormLayout::LabelRole, label_5);birthdayLineEdit new QLineEdit(layoutWidget);birthdayLineEdit-setObjectName(birthdayLineEdit);birthdayLineEdit-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(3, QFormLayout::FieldRole, birthdayLineEdit);label_6 new QLabel(layoutWidget);label_6-setObjectName(label_6);label_6-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(4, QFormLayout::LabelRole, label_6);phoneLineEdit new QLineEdit(layoutWidget);phoneLineEdit-setObjectName(phoneLineEdit);phoneLineEdit-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(4, QFormLayout::FieldRole, phoneLineEdit);layoutWidget1 new QWidget(reg);layoutWidget1-setObjectName(layoutWidget1);layoutWidget1-setGeometry(QRect(130, 280, 158, 39));horizontalLayout new QHBoxLayout(layoutWidget1);horizontalLayout-setObjectName(horizontalLayout);horizontalLayout-setContentsMargins(0, 0, 0, 0);OkButton new QPushButton(layoutWidget1);OkButton-setObjectName(OkButton);OkButton-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout-addWidget(OkButton);cancelButton new QPushButton(layoutWidget1);cancelButton-setObjectName(cancelButton);cancelButton-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout-addWidget(cancelButton);retranslateUi(reg);QMetaObject::connectSlotsByName(reg);} // setupUivoid retranslateUi(QWidget *reg){reg-setWindowTitle(QCoreApplication::translate(reg, Form, nullptr));label-setText(QCoreApplication::translate(reg, \345\255\246\347\224\237\344\277\241\346\201\257\345\275\225\345\205\245, nullptr));label_2-setText(QCoreApplication::translate(reg, \345\247\223\345\220\215, nullptr));stuNameLineEdit-setText(QString());label_3-setText(QCoreApplication::translate(reg, \345\255\246\345\217\267, nullptr));stuNumberLineEdit-setText(QString());label_4-setText(QCoreApplication::translate(reg, \346\200\247\345\210\253, nullptr));sexLineEdit-setText(QString());label_5-setText(QCoreApplication::translate(reg, \345\271\264\351\276\204, nullptr));birthdayLineEdit-setText(QString());label_6-setText(QCoreApplication::translate(reg, \350\201\224\347\263\273\346\226\271\345\274\217, nullptr));phoneLineEdit-setText(QString());OkButton-setText(QCoreApplication::translate(reg, \347\241\256\345\256\232, nullptr));cancelButton-setText(QCoreApplication::translate(reg, \345\217\226\346\266\210, nullptr));} // retranslateUi};namespace Ui {class reg: public Ui_reg {};
} // namespace UiQT_END_NAMESPACE#endif // UI_REG_H
Cmakelists.txt
cmake_minimum_required(VERSION 3.5)project(Learn_24 VERSION 0.1 LANGUAGES CXX)set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Sql)set(TS_FILES Learn_24_zh_CN.ts)set(PROJECT_SOURCESmain.cppWidget.cppWidget.hWidget.uistudent.cppstudent.hstudent.uireg.cppreg.hreg.ui${TS_FILES}
)if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)qt_add_executable(Learn_24MANUAL_FINALIZATION${PROJECT_SOURCES})
# Define target properties for Android with Qt 6 as:
# set_property(TARGET Learn_24 APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
# ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creationqt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
else()if(ANDROID)add_library(Learn_24 SHARED${PROJECT_SOURCES})
# Define properties for Android with Qt 5 after find_package() calls as:
# set(ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/android)else()add_executable(Learn_24${PROJECT_SOURCES})endif()qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
endif()target_link_libraries(Learn_24 PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries(Learn_24 PRIVATE Qt${QT_VERSION_MAJOR}::Sql)set_target_properties(Learn_24 PROPERTIESMACOSX_BUNDLE_GUI_IDENTIFIER my.example.comMACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}MACOSX_BUNDLE TRUEWIN32_EXECUTABLE TRUE
)install(TARGETS Learn_24BUNDLE DESTINATION .LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})if(QT_VERSION_MAJOR EQUAL 6)qt_finalize_executable(Learn_24)
endif()
管理员端源码:
main.cpp
#include Widget.h#include QApplication
#include QLocale
#include QTranslatorint main(int argc, char *argv[])
{QApplication a(argc, argv);QTranslator translator;const QStringList uiLanguages QLocale::system().uiLanguages();for (const QString locale : uiLanguages) {const QString baseName Learn_25_ QLocale(locale).name();if (translator.load(:/i18n/ baseName)) {a.installTranslator(translator);break;}}Widget w;w.show();return a.exec();
}
Widget.cpp
#include Widget.h
#include ./ui_Widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);qdata QSqlDatabase::addDatabase(QSQLITE);qdata.setHostName(localhost);qdata.setDatabaseName(E:\\clangC\\learnQT\\Learn_24\\database.db);qdata.setUserName(root);qdata.setPassword(root);if (qdata.open()){qDebug() OK;}else{qDebug() Fail;}
}Widget::~Widget()
{delete ui;delete adm;
}void Widget::on_longinButton_clicked()
{QSqlQuery qsql(qdata);if (qsql.exec(QString(SELECT * FROM login WHERE name %1;).arg(ui-nameLineEdit-text()))){while (qsql.next()){if (qsql.value(1).toString() ui-passwordLineEdit-text()){adm new admin(qdata);this-hide();adm-show();break;}}}else{qDebug() fail;}
}Widget.h
#ifndef WIDGET_H
#define WIDGET_H#include admin.h
#include QMessageBox
#include QSqlDatabase
#include QSqlQuery
#include QWidgetQT_BEGIN_NAMESPACE
namespace Ui
{
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots:void on_longinButton_clicked();private:Ui::Widget *ui;QSqlDatabase qdata;admin *adm nullptr;
};
#endif // WIDGET_Hui_Widget.h
/********************************************************************************
** Form generated from reading UI file Widget.ui
**
** Created by: Qt User Interface Compiler version 6.5.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/#ifndef UI_WIDGET_H
#define UI_WIDGET_H#include QtCore/QVariant
#include QtWidgets/QApplication
#include QtWidgets/QFormLayout
#include QtWidgets/QLabel
#include QtWidgets/QLineEdit
#include QtWidgets/QPushButton
#include QtWidgets/QWidgetQT_BEGIN_NAMESPACEclass Ui_Widget
{
public:QLabel *label;QPushButton *longinButton;QWidget *layoutWidget;QFormLayout *formLayout;QLabel *label_2;QLineEdit *nameLineEdit;QLabel *label_3;QLineEdit *passwordLineEdit;void setupUi(QWidget *Widget){if (Widget-objectName().isEmpty())Widget-setObjectName(Widget);Widget-resize(304, 217);label new QLabel(Widget);label-setObjectName(label);label-setGeometry(QRect(80, 10, 141, 37));label-setStyleSheet(QString::fromUtf8(font: 700 20pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));longinButton new QPushButton(Widget);longinButton-setObjectName(longinButton);longinButton-setGeometry(QRect(110, 170, 91, 31));longinButton-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));layoutWidget new QWidget(Widget);layoutWidget-setObjectName(layoutWidget);layoutWidget-setGeometry(QRect(10, 70, 291, 72));formLayout new QFormLayout(layoutWidget);formLayout-setObjectName(formLayout);formLayout-setContentsMargins(0, 0, 0, 0);label_2 new QLabel(layoutWidget);label_2-setObjectName(label_2);label_2-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(0, QFormLayout::LabelRole, label_2);nameLineEdit new QLineEdit(layoutWidget);nameLineEdit-setObjectName(nameLineEdit);nameLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(0, QFormLayout::FieldRole, nameLineEdit);label_3 new QLabel(layoutWidget);label_3-setObjectName(label_3);label_3-setStyleSheet(QString::fromUtf8(font: 700 16pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(1, QFormLayout::LabelRole, label_3);passwordLineEdit new QLineEdit(layoutWidget);passwordLineEdit-setObjectName(passwordLineEdit);passwordLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));formLayout-setWidget(1, QFormLayout::FieldRole, passwordLineEdit);retranslateUi(Widget);QMetaObject::connectSlotsByName(Widget);} // setupUivoid retranslateUi(QWidget *Widget){Widget-setWindowTitle(QCoreApplication::translate(Widget, Widget, nullptr));label-setText(QCoreApplication::translate(Widget, \347\256\241\347\220\206\345\221\230\347\231\273\345\275\225, nullptr));longinButton-setText(QCoreApplication::translate(Widget, \347\231\273\345\275\225, nullptr));label_2-setText(QCoreApplication::translate(Widget, \350\264\246\345\217\267, nullptr));nameLineEdit-setText(QCoreApplication::translate(Widget, root, nullptr));label_3-setText(QCoreApplication::translate(Widget, \345\257\206\347\240\201, nullptr));passwordLineEdit-setText(QCoreApplication::translate(Widget, root, nullptr));} // retranslateUi};namespace Ui {class Widget: public Ui_Widget {};
} // namespace UiQT_END_NAMESPACE#endif // UI_WIDGET_Hadmin.cpp
#include admin.h
#include ui_admin.hadmin::admin(QSqlDatabase *qdata_, QWidget *parent): QWidget(parent), ui(new Ui::admin), qdata(qdata_)
{ui-setupUi(this);// qtbv new QSqlTableModel(this, *qdata);qtbv new myModel(this, *qdata);qtbv-setTable(student);qtbv-select();qtbv-setEditStrategy(QSqlTableModel::OnManualSubmit);qtbv-setHeaderData(0, Qt::Horizontal, 学号);qtbv-setHeaderData(2, Qt::Horizontal, 姓名);qtbv-setHeaderData(6, Qt::Horizontal, 数学);qtbv-setHeaderData(7, Qt::Horizontal, 语文);qtbv-setHeaderData(8, Qt::Horizontal, 英语);qtbv-setHeaderData(9, Qt::Horizontal, 物理);qtbv-setHeaderData(10, Qt::Horizontal, 化学);ui-scoreTableView-setModel(qtbv);ui-scoreTableView-hideColumn(1);ui-scoreTableView-hideColumn(3);ui-scoreTableView-hideColumn(4);ui-scoreTableView-hideColumn(5);
}admin::~admin()
{qDebug() delete admin;delete ui;
}void admin::on_newsButton_clicked()
{QSqlQuery qsql(*qdata);if (ui-newsDateLineEdit-text().isEmpty() ||ui-newsTitleLineEdit-text().isEmpty() ||ui-newsTextEdit-toPlainText().isEmpty()){QMessageBox::information(this, 提示, 日期, 标题, 内容不可为空);}else{if (qsql.exec(QString(INSERT INTO news VALUES (%1, %2, %3);).arg(ui-newsDateLineEdit-text()).arg(ui-newsTitleLineEdit-text()).arg(ui-newsTextEdit-toPlainText()))){qDebug() OK;}}
}void admin::on_classButton_clicked()
{QSqlQuery qsql(*qdata);if (ui-classDateLineEdit-text().isEmpty() ||ui-classTitleLineEdit-text().isEmpty() ||ui-classTextEdit-toPlainText().isEmpty()){QMessageBox::information(this, 提示, 日期, 标题, 内容不可为空);}else{if (qsql.exec(QString(INSERT INTO news VALUES (%1, %2, %3);).arg(ui-classDateLineEdit-text()).arg(ui-classTitleLineEdit-text()).arg(ui-classTextEdit-toPlainText()))){qDebug() OK;}}
}void admin::on_stuScoreButton_clicked()
{if (qtbv-submitAll()){qDebug() submitAll OK;}
}admin.h
#ifndef ADMIN_H
#define ADMIN_H#include myModel.h
#include QMessageBox
#include QSqlDatabase
#include QSqlQuery
#include QSqlTableModel
#include QWidgetnamespace Ui
{
class admin;
}class admin : public QWidget
{Q_OBJECTpublic:explicit admin(QSqlDatabase *qdata_, QWidget *parent nullptr);~admin();private slots:void on_newsButton_clicked();void on_classButton_clicked();void on_stuScoreButton_clicked();private:Ui::admin *ui;QSqlDatabase *qdata;myModel *qtbv;// QSqlTableModel *qtbv;
};#endif // ADMIN_Hui_admin.h
/********************************************************************************
** Form generated from reading UI file admin.ui
**
** Created by: Qt User Interface Compiler version 6.5.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/#ifndef UI_ADMIN_H
#define UI_ADMIN_H#include QtCore/QVariant
#include QtWidgets/QApplication
#include QtWidgets/QFrame
#include QtWidgets/QHBoxLayout
#include QtWidgets/QHeaderView
#include QtWidgets/QLabel
#include QtWidgets/QLineEdit
#include QtWidgets/QPlainTextEdit
#include QtWidgets/QPushButton
#include QtWidgets/QSpacerItem
#include QtWidgets/QTableView
#include QtWidgets/QWidgetQT_BEGIN_NAMESPACEclass Ui_admin
{
public:QFrame *line;QFrame *line_2;QTableView *scoreTableView;QPlainTextEdit *newsTextEdit;QPlainTextEdit *classTextEdit;QWidget *layoutWidget;QHBoxLayout *horizontalLayout_3;QLabel *label_6;QLineEdit *classDateLineEdit;QLabel *label_7;QLineEdit *classTitleLineEdit;QWidget *widget;QHBoxLayout *horizontalLayout;QLabel *label_4;QLineEdit *newsDateLineEdit;QLabel *label_5;QLineEdit *newsTitleLineEdit;QWidget *widget1;QHBoxLayout *horizontalLayout_2;QLabel *label_2;QSpacerItem *horizontalSpacer;QPushButton *newsButton;QWidget *widget2;QHBoxLayout *horizontalLayout_4;QLabel *label_3;QSpacerItem *horizontalSpacer_2;QPushButton *classButton;QWidget *widget3;QHBoxLayout *horizontalLayout_5;QLabel *label;QSpacerItem *horizontalSpacer_3;QPushButton *stuScoreButton;void setupUi(QWidget *admin){if (admin-objectName().isEmpty())admin-setObjectName(admin);admin-resize(1210, 950);admin-setMinimumSize(QSize(1210, 950));admin-setMaximumSize(QSize(1210, 950));line new QFrame(admin);line-setObjectName(line);line-setGeometry(QRect(7, 530, 1191, 20));line-setFrameShape(QFrame::HLine);line-setFrameShadow(QFrame::Sunken);line_2 new QFrame(admin);line_2-setObjectName(line_2);line_2-setGeometry(QRect(600, 540, 21, 401));line_2-setFrameShape(QFrame::VLine);line_2-setFrameShadow(QFrame::Sunken);scoreTableView new QTableView(admin);scoreTableView-setObjectName(scoreTableView);scoreTableView-setGeometry(QRect(10, 60, 1191, 471));scoreTableView-setStyleSheet(QString::fromUtf8(font: 700 12pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));newsTextEdit new QPlainTextEdit(admin);newsTextEdit-setObjectName(newsTextEdit);newsTextEdit-setGeometry(QRect(10, 677, 591, 261));classTextEdit new QPlainTextEdit(admin);classTextEdit-setObjectName(classTextEdit);classTextEdit-setGeometry(QRect(618, 677, 583, 261));layoutWidget new QWidget(admin);layoutWidget-setObjectName(layoutWidget);layoutWidget-setGeometry(QRect(640, 620, 532, 34));horizontalLayout_3 new QHBoxLayout(layoutWidget);horizontalLayout_3-setObjectName(horizontalLayout_3);horizontalLayout_3-setContentsMargins(0, 0, 0, 0);label_6 new QLabel(layoutWidget);label_6-setObjectName(label_6);label_6-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_3-addWidget(label_6);classDateLineEdit new QLineEdit(layoutWidget);classDateLineEdit-setObjectName(classDateLineEdit);classDateLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_3-addWidget(classDateLineEdit);label_7 new QLabel(layoutWidget);label_7-setObjectName(label_7);label_7-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_3-addWidget(label_7);classTitleLineEdit new QLineEdit(layoutWidget);classTitleLineEdit-setObjectName(classTitleLineEdit);classTitleLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_3-addWidget(classTitleLineEdit);widget new QWidget(admin);widget-setObjectName(widget);widget-setGeometry(QRect(20, 620, 532, 34));horizontalLayout new QHBoxLayout(widget);horizontalLayout-setObjectName(horizontalLayout);horizontalLayout-setContentsMargins(0, 0, 0, 0);label_4 new QLabel(widget);label_4-setObjectName(label_4);label_4-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout-addWidget(label_4);newsDateLineEdit new QLineEdit(widget);newsDateLineEdit-setObjectName(newsDateLineEdit);newsDateLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout-addWidget(newsDateLineEdit);label_5 new QLabel(widget);label_5-setObjectName(label_5);label_5-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout-addWidget(label_5);newsTitleLineEdit new QLineEdit(widget);newsTitleLineEdit-setObjectName(newsTitleLineEdit);newsTitleLineEdit-setStyleSheet(QString::fromUtf8(font: 700 14pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout-addWidget(newsTitleLineEdit);widget1 new QWidget(admin);widget1-setObjectName(widget1);widget1-setGeometry(QRect(230, 550, 281, 47));horizontalLayout_2 new QHBoxLayout(widget1);horizontalLayout_2-setObjectName(horizontalLayout_2);horizontalLayout_2-setContentsMargins(0, 0, 0, 0);label_2 new QLabel(widget1);label_2-setObjectName(label_2);label_2-setStyleSheet(QString::fromUtf8(font: 700 20pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_2-addWidget(label_2);horizontalSpacer new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);horizontalLayout_2-addItem(horizontalSpacer);newsButton new QPushButton(widget1);newsButton-setObjectName(newsButton);newsButton-setStyleSheet(QString::fromUtf8(font: 700 18pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_2-addWidget(newsButton);widget2 new QWidget(admin);widget2-setObjectName(widget2);widget2-setGeometry(QRect(770, 550, 311, 43));horizontalLayout_4 new QHBoxLayout(widget2);horizontalLayout_4-setObjectName(horizontalLayout_4);horizontalLayout_4-setContentsMargins(0, 0, 0, 0);label_3 new QLabel(widget2);label_3-setObjectName(label_3);label_3-setStyleSheet(QString::fromUtf8(font: 700 20pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_4-addWidget(label_3);horizontalSpacer_2 new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);horizontalLayout_4-addItem(horizontalSpacer_2);classButton new QPushButton(widget2);classButton-setObjectName(classButton);classButton-setStyleSheet(QString::fromUtf8(font: 700 18pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_4-addWidget(classButton);widget3 new QWidget(admin);widget3-setObjectName(widget3);widget3-setGeometry(QRect(520, 10, 371, 43));horizontalLayout_5 new QHBoxLayout(widget3);horizontalLayout_5-setObjectName(horizontalLayout_5);horizontalLayout_5-setContentsMargins(0, 0, 0, 0);label new QLabel(widget3);label-setObjectName(label);label-setStyleSheet(QString::fromUtf8(font: 700 20pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_5-addWidget(label);horizontalSpacer_3 new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);horizontalLayout_5-addItem(horizontalSpacer_3);stuScoreButton new QPushButton(widget3);stuScoreButton-setObjectName(stuScoreButton);stuScoreButton-setStyleSheet(QString::fromUtf8(font: 700 18pt \\351\230\277\351\207\214\345\267\264\345\267\264\346\231\256\346\203\240\344\275\223 B\;));horizontalLayout_5-addWidget(stuScoreButton);retranslateUi(admin);QMetaObject::connectSlotsByName(admin);} // setupUivoid retranslateUi(QWidget *admin){admin-setWindowTitle(QCoreApplication::translate(admin, Form, nullptr));label_6-setText(QCoreApplication::translate(admin, \346\227\245\346\234\237, nullptr));label_7-setText(QCoreApplication::translate(admin, \346\240\207\351\242\230, nullptr));label_4-setText(QCoreApplication::translate(admin, \346\227\245\346\234\237, nullptr));label_5-setText(QCoreApplication::translate(admin, \346\240\207\351\242\230, nullptr));label_2-setText(QCoreApplication::translate(admin, \345\205\254\345\221\212\347\256\241\347\220\206, nullptr));newsButton-setText(QCoreApplication::translate(admin, \345\217\221\345\270\203, nullptr));label_3-setText(QCoreApplication::translate(admin, \347\217\255\347\272\247\344\277\241\346\201\257\347\256\241\347\220\206, nullptr));classButton-setText(QCoreApplication::translate(admin, \345\217\221\345\270\203, nullptr));label-setText(QCoreApplication::translate(admin, \345\255\246\347\224\237\346\210\220\347\273\251\347\256\241\347\220\206, nullptr));stuScoreButton-setText(QCoreApplication::translate(admin, \345\217\221\345\270\203, nullptr));} // retranslateUi};namespace Ui {class admin: public Ui_admin {};
} // namespace UiQT_END_NAMESPACE#endif // UI_ADMIN_HmyModel.cpp
#include myModel.hmyModel::myModel(QObject *parent, const QSqlDatabase db): QSqlTableModel{parent, db}
{}myModel::~myModel()
{qDebug() ~myModel;
}Qt::ItemFlags myModel::flags(const QModelIndex index) const
{if (index.column() 0 || index.column() 2){return Qt::ItemIsEnabled | Qt::ItemIsSelectable;}else{return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable;}
}myModel.h
#ifndef MYMODEL_H
#define MYMODEL_H#include QObject
#include QSqlTableModelclass myModel : public QSqlTableModel
{Q_OBJECTpublic:explicit myModel(QObject *parent nullptr,const QSqlDatabase db QSqlDatabase());~myModel();Qt::ItemFlags flags(const QModelIndex index) const override;signals:
};#endif // MYMODEL_H 总结
二十六 学生信息管理系统 插入介绍: QTableView和QSqlTableModel QTableView QSqlTableModel 程序所用数据库表格 程序组成以及界面 学生端源码: 管理员端源码: 点击 C 语言编程核心突破 快速C语言入门