// =====================================================================================
//
// Filename: NewJoinWidget.cpp
//
// Description: 新人录入选项卡控件
//
// Version: 1.0
// Created: 2013年03月21日 16时03分54秒
// Revision: none
// Compiler: g++
//
// Author: Hurley (LiuHuan), [email protected]
// Company: Class 1107 of Computer Science and Technology
//
// =====================================================================================
#include <QtGui>
#include <QtSql>
#include "NewJoinWidget.h"
#include "SqlTableModel.h"
#include "ChangeInfoDialog.h"
#include "xylms.h"
NewJoinWidget::NewJoinWidget()
{
sqlModel = new SqlTableModel();
// 默认显示的数据表
sqlModel->setTable("stu_" + settingInfo.userViewYears);
createSqlTableModel();
sqlModel->select();
// 创建显示模式
createView();
// 建立数据操作按钮
createUserItem();
// 组装主显示右侧的 Layout
rightLayout = new QVBoxLayout();
rightLayout->addWidget(stuGroupBox);
rightLayout->addStretch();
rightLayout->addWidget(seniorGroupBox);
rightLayout->addStretch();
rightLayout->addWidget(buttonGroupBox);
// 组装主显示的 Layout
mainLayout = new QHBoxLayout();
mainLayout->addWidget(view);
mainLayout->addLayout(rightLayout);
this->setLayout(mainLayout);
}
NewJoinWidget::~NewJoinWidget()
{
}
void NewJoinWidget::createView()
{
view = new QTableView();
view->setModel(sqlModel);
// 只允许单选
view->setSelectionMode(QAbstractItemView::SingleSelection);
// 每次选中一行
view->setSelectionBehavior(QAbstractItemView::SelectRows);
// 隐藏数据库编号和成绩数据
view->setColumnHidden(stu_num ,true);
setDisplayScore(false);
// 按照显示内容重新调整列宽度
view->resizeColumnsToContents();
// 默认不允许用户编辑数据
view->setEditTriggers(QAbstractItemView::NoEditTriggers);
}
void NewJoinWidget::createUserItem()
{
// 数据表列表
stuComboBox = new QComboBox();
stuComboBox->addItem(settingInfo.userViewYears + "级信息");
stuComboBox->setCurrentIndex(0);
stuComboBox->setEnabled(false);
connect(stuComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(refresh()));
stuLayout = new QVBoxLayout();
stuLayout->addWidget(stuComboBox);
// 组装数据浏览 GroupBox
stuGroupBox = new QGroupBox(tr("当前显示"));
stuGroupBox->setLayout(stuLayout);
seniorCheckBox = new QCheckBox(tr("启用自由编辑"));
connect(seniorCheckBox, SIGNAL(stateChanged(int)), this, SLOT(setSeniorButtonState(int)));
submitButton = new QPushButton(tr("提交修改"));
submitButton->setEnabled(false);
connect(submitButton, SIGNAL(clicked()), this, SLOT(submitDataChange()));
restoreButton = new QPushButton(tr("撤销修改"));
restoreButton->setEnabled(false);
connect(restoreButton, SIGNAL(clicked()), sqlModel, SLOT(revertAll()));
seniorLayout = new QVBoxLayout();
seniorLayout->addWidget(seniorCheckBox);
seniorLayout->addWidget(submitButton);
seniorLayout->addWidget(restoreButton);
// 组装高级操作选项的 GroupBox
seniorGroupBox = new QGroupBox(tr("高级操作 [请谨慎]"));
seniorGroupBox->setLayout(seniorLayout);
addButton = new QPushButton(tr("增加成员"));
connect(addButton, SIGNAL(clicked()), this, SLOT(addInfo()));
changeButton = new QPushButton(tr("修改选中"));
connect(changeButton, SIGNAL(clicked()), this, SLOT(changeInfo()));
delButton = new QPushButton(tr("删除选中"));
connect(delButton, SIGNAL(clicked()), this, SLOT(delInfo()));
refreshButton = new QPushButton(tr("刷新数据"));
connect(refreshButton, SIGNAL(clicked()), this, SLOT(refresh()));
// 根据系统设置屏判断是否启用普通用户操作权限
if (!settingInfo.userPower) {
seniorCheckBox->setEnabled(false);
addButton->setEnabled(false);
changeButton->setEnabled(false);
delButton->setEnabled(false);
}
buttonLayout = new QVBoxLayout();
buttonLayout->addWidget(addButton);
buttonLayout->addStretch();
buttonLayout->addWidget(changeButton);
buttonLayout->addStretch();
buttonLayout->addWidget(delButton);
buttonLayout->addStretch();
buttonLayout->addWidget(refreshButton);
// 组装数据操作 GroupBox
buttonGroupBox = new QGroupBox(tr("数据操作"));
buttonGroupBox->setLayout(buttonLayout);
}
void NewJoinWidget::createSqlTableModel()
{
sqlModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
// 插入表头
sqlModel->setHeaderData(stu_id, Qt::Horizontal, tr("学号"));
sqlModel->setHeaderData(stu_name, Qt::Horizontal, tr("姓名"));
sqlModel->setHeaderData(stu_sex, Qt::Horizontal, tr("性别"));
sqlModel->setHeaderData(stu_class, Qt::Horizontal, tr("班级"));
sqlModel->setHeaderData(stu_birthday, Qt::Horizontal, tr("生日"));
sqlModel->setHeaderData(stu_qq, Qt::Horizontal, tr("QQ"));
sqlModel->setHeaderData(stu_phone1, Qt::Horizontal, tr("手机1"));
sqlModel->setHeaderData(stu_phone2, Qt::Horizontal, tr("手机2"));
sqlModel->setHeaderData(stu_mail, Qt::Horizontal, tr("邮箱"));
sqlModel->setHeaderData(stu_blog, Qt::Horizontal, tr("博客"));
sqlModel->setHeaderData(stu_where_to_go, Qt::Horizontal, tr("去向"));
sqlModel->setHeaderData(stu_other_info, Qt::Horizontal, tr("备注信息"));
}
void NewJoinWidget::setSeniorButtonState(int flag)
{
if (flag == Qt::Checked) {
view->setEditTriggers(QAbstractItemView::DoubleClicked);
submitButton->setEnabled(true);
restoreButton->setEnabled(true);
} else {
view->setEditTriggers(QAbstractItemView::NoEditTriggers);
submitButton->setEnabled(false);
restoreButton->setEnabled(false);
}
}
void NewJoinWidget::commitToDatabase()
{
// 采用事务的方式进行数据提交
sqlModel->database().transaction();
if (sqlModel->submitAll()) {
sqlModel->database().commit(); // 成功则提交数据
QMessageBox::information(this, tr("数据修改提交成功"),
tr("修改已经成功同步到数据库。"));
} else {
sqlModel->database().rollback(); // 失败则回滚修改
QMessageBox::warning(this, tr("数据修改提交错误"),
tr("数据库报告了一个错误: %1 <p>本次所有修改已回滚,点击刷新按钮重置显示。")
.arg(sqlModel->lastError().text()));
refresh();
}
}
void NewJoinWidget::submitDataChange()
{
int choose = QMessageBox::question(this, tr("数据提交确认"),
tr("<H3>您确认要把当前数据表显示的数据提交到数据库吗?</H3>"
"<p><font color=red>* 注意此操作不可逆!</font>"),
QMessageBox::Yes | QMessageBox::No);
if (choose == QMessageBox::Yes) {
commitToDatabase();
}
// 按照显示内容重新调整列宽度
view->resizeColumnsToContents();
}
void NewJoinWidget::addInfo()
{
refresh();
int rowNum = sqlModel->rowCount(); // 获得表的行数
sqlModel->insertRow(rowNum); // 新插入行的位置就是表的行数,因为插入位置从 0 开始计算
ChangeInfoDialog changeInfoDialog(sqlModel, rowNum);
if (changeInfoDialog.exec() == QDialog::QDialog::Rejected) {
refresh();
return;
}
changeRowInfo(changeInfoDialog, rowNum);
commitToDatabase();
// 按照显示内容重新调整列宽度
view->resizeColumnsToContents();
}
void NewJoinWidget::changeInfo()
{
refresh();
int flag = view->currentIndex().column();
if (flag == 0) {
QMessageBox::information(this, tr("修改操作失败"),
tr("没找到您选择了哪一行哎~~<p>请您先选择待修改的行好吗?"));
return;
}
int rowNum = view->currentIndex().row();
ChangeInfoDialog changeInfoDialog(sqlModel, rowNum);
if (changeInfoDialog.exec() == QDialog::QDialog::Rejected) {
return;
}
changeRowInfo(changeInfoDialog, rowNum);
commitToDatabase();
// 按照显示内容重新调整列宽度
view->resizeColumnsToContents();
}
void NewJoinWidget::changeScore()
{
没有合适的资源?快使用搜索试试~ 我知道了~
基于QT的成员管理系统.zip
共49个文件
png:21个
cpp:11个
h:10个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 20 浏览量
2024-04-26
16:31:47
上传
评论
收藏 340KB ZIP 举报
温馨提示
基于QT的系统
资源推荐
资源详情
资源评论
收起资源包目录
基于QT的成员管理系统.zip (49个子文件)
xylms-master
xylms.pro 1KB
include
SqlTableModel.h 835B
StackedWidget.h 956B
ChangeScoreDialog.h 1015B
ManageWidget.h 1KB
ChangeInfoDialog.h 1KB
GradeWidget.h 1KB
SetWidget.h 920B
NewJoinWidget.h 2KB
xylms.h 2KB
MainWindow.h 2KB
src
GradeWidget.cpp 9KB
SqlTableModel.cpp 959B
NewJoinWidget.cpp 11KB
xylms.cpp 2KB
SetWidget.cpp 5KB
main.cpp 2KB
ChangeInfoDialog.cpp 3KB
StackedWidget.cpp 1KB
ChangeScoreDialog.cpp 3KB
MainWindow.cpp 7KB
ManageWidget.cpp 7KB
res
language
qt_zh_CN.qm 115KB
images
Pass.png 9KB
noPass.png 7KB
manage.png 8KB
newJoin.png 8KB
c.png 9KB
logo.png 93KB
proving_in.png 8KB
cPlus.png 9KB
about.png 8KB
proving_out.png 6KB
d.png 9KB
set.png 9KB
exit.png 9KB
a.png 9KB
grade.png 9KB
cMinus.png 9KB
aPlus.png 10KB
aMinus.png 9KB
bPlus.png 9KB
b.png 9KB
bMinus.png 9KB
xylms.qrc 875B
ui
SetWidget.ui 12KB
ChangeScoreDialog.ui 6KB
ChangeInfoDialog.ui 5KB
GradeWidget.ui 12KB
共 49 条
- 1
资源评论
我慢慢地也过来了
- 粉丝: 6446
- 资源: 3991
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功