帮我用qt写一个球员管理系统
时间: 2023-07-13 11:13:04 浏览: 32
好的,下面是一个简单的球员管理系统的Qt实现,包括添加球员、删除球员、编辑球员信息、显示球员列表等功能。代码中使用了QListWidget和QLineEdit等控件,您可以根据需要进行修改和完善。
```cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QListWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
initUI();
initConnect();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::initUI()
{
QWidget *centralWidget = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout(centralWidget);
// 显示球员列表
QLabel *label = new QLabel("球员列表", centralWidget);
layout->addWidget(label);
playerList = new QListWidget(centralWidget);
layout->addWidget(playerList);
// 添加/编辑球员信息
QLabel *nameLabel = new QLabel("姓名", centralWidget);
nameLabel->setFixedWidth(50);
nameEdit = new QLineEdit(centralWidget);
QHBoxLayout *nameLayout = new QHBoxLayout();
nameLayout->addWidget(nameLabel);
nameLayout->addWidget(nameEdit);
layout->addLayout(nameLayout);
QLabel *ageLabel = new QLabel("年龄", centralWidget);
ageLabel->setFixedWidth(50);
ageEdit = new QLineEdit(centralWidget);
QHBoxLayout *ageLayout = new QHBoxLayout();
ageLayout->addWidget(ageLabel);
ageLayout->addWidget(ageEdit);
layout->addLayout(ageLayout);
QLabel *positionLabel = new QLabel("位置", centralWidget);
positionLabel->setFixedWidth(50);
positionEdit = new QLineEdit(centralWidget);
QHBoxLayout *positionLayout = new QHBoxLayout();
positionLayout->addWidget(positionLabel);
positionLayout->addWidget(positionEdit);
layout->addLayout(positionLayout);
QPushButton *addButton = new QPushButton("添加", centralWidget);
QPushButton *editButton = new QPushButton("编辑", centralWidget);
QHBoxLayout *buttonLayout = new QHBoxLayout();
buttonLayout->addWidget(addButton);
buttonLayout->addWidget(editButton);
layout->addLayout(buttonLayout);
setCentralWidget(centralWidget);
}
void MainWindow::initConnect()
{
connect(playerList, &QListWidget::currentRowChanged, this, &MainWindow::displayPlayerInfo);
connect(playerList, &QListWidget::itemDoubleClicked, this, &MainWindow::editPlayerInfo);
connect(addButton, &QPushButton::clicked, this, &MainWindow::addPlayer);
connect(editButton, &QPushButton::clicked, this, &MainWindow::editPlayer);
connect(deleteButton, &QPushButton::clicked, this, &MainWindow::deletePlayer);
}
void MainWindow::displayPlayerInfo(int row)
{
if (row >= 0 && row < playerList->count()) {
QListWidgetItem *item = playerList->item(row);
Player player = qvariant_cast<Player>(item->data(Qt::UserRole));
nameEdit->setText(player.name);
ageEdit->setText(QString::number(player.age));
positionEdit->setText(player.position);
}
}
void MainWindow::editPlayerInfo(QListWidgetItem *item)
{
Player player = qvariant_cast<Player>(item->data(Qt::UserRole));
nameEdit->setText(player.name);
ageEdit->setText(QString::number(player.age));
positionEdit->setText(player.position);
}
void MainWindow::addPlayer()
{
QString name = nameEdit->text();
int age = ageEdit->text().toInt();
QString position = positionEdit->text();
if (name.isEmpty() || age < 0 || position.isEmpty()) {
QMessageBox::warning(this, "错误", "请填写完整信息");
return;
}
Player player(name, age, position);
QListWidgetItem *item = new QListWidgetItem();
item->setData(Qt::UserRole, QVariant::fromValue(player));
item->setText(name);
playerList->addItem(item);
}
void MainWindow::editPlayer()
{
int row = playerList->currentRow();
if (row >= 0 && row < playerList->count()) {
QString name = nameEdit->text();
int age = ageEdit->text().toInt();
QString position = positionEdit->text();
if (name.isEmpty() || age < 0 || position.isEmpty()) {
QMessageBox::warning(this, "错误", "请填写完整信息");
return;
}
QListWidgetItem *item = playerList->item(row);
Player player(name, age, position);
item->setData(Qt::UserRole, QVariant::fromValue(player));
item->setText(name);
}
}
void MainWindow::deletePlayer()
{
int row = playerList->currentRow();
if (row >= 0 && row < playerList->count()) {
playerList->takeItem(row);
}
}
```
其中,Player类表示球员信息,包括姓名、年龄和位置:
```cpp
#ifndef PLAYER_H
#define PLAYER_H
#include <QString>
class Player
{
public:
Player(const QString &name, int age, const QString &position);
QString name;
int age;
QString position;
};
#endif // PLAYER_H
```
```cpp
#include "player.h"
Player::Player(const QString &name, int age, const QString &position)
: name(name), age(age), position(position)
{
}
```