jianbin.chang常健彬 ce734d1af1 厂家提供原始代码
2025-07-17 08:39:15 +08:00

193 lines
6.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef SETUPUERS_H
#define SETUPUERS_H
#include <QWidget>
#include <QtSql>
#include <QDataWidgetMapper>
#include <QSqlTableModel>
#include <QTableView>
#include <QStandardItemModel>
#include <QStyledItemDelegate>
#include <QPushButton>
#include <QMessageBox>
#include<QLineEdit>
#include "addusers.h"
#include<date.h>
#include<datee.h>
#include <QStyledItemDelegate>
#include <QPushButton>
#include <QPainter>
#include <QApplication>
#include <QMouseEvent>
#include <QModelIndex>
class CenteredItemDelegate5 : public QStyledItemDelegate {
public:
QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override {
QWidget* editor = QStyledItemDelegate::createEditor(parent, option, index);
if (editor) {
editor->setStyleSheet("text-align: center;");
}
return editor;
}
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override {
QStyleOptionViewItem opt = option;
opt.displayAlignment = Qt::AlignHCenter | Qt::AlignVCenter;
QStyledItemDelegate::paint(painter, opt, index);
}
};
class ButtonDelegate : public QStyledItemDelegate
{
Q_OBJECT
signals:
void editButtonClicked(const QModelIndex& index) const;
void deleteButtonClicked(const QModelIndex& index) const;
public:
using QStyledItemDelegate::QStyledItemDelegate;
// 创建编辑器这里我们不需要编辑器返回nullptr
QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override
{
return nullptr;
}
// 重绘函数,用于绘制按钮
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override
{
if (index.column() == 5) // 判断是否为第五列
{
// 绘制编辑按钮
// QStyleOptionButton editButtonOption;
// editButtonOption.rect = option.rect;
// editButtonOption.rect.setWidth(editButtonOption.rect.width() * 0.4);
// editButtonOption.text = "编辑";
// editButtonOption.state = QStyle::State_Enabled;
// editButtonOption.features |= QStyleOptionButton::Flat; // 设置为扁平样式,去除边框
// QApplication::style()->drawControl(QStyle::CE_PushButton, &editButtonOption, painter);
// 绘制删除按钮
QStyleOptionButton deleteButtonOption;
deleteButtonOption.rect = option.rect;
// deleteButtonOption.rect = option.rect;
// deleteButtonOption.rect.setX(deleteButtonOption.rect.x() + deleteButtonOption.rect.width() * 0.4);
// deleteButtonOption.rect.setWidth(deleteButtonOption.rect.width() * 0.6);
deleteButtonOption.text = "删除";
deleteButtonOption.state = QStyle::State_Enabled;
deleteButtonOption.features |= QStyleOptionButton::Flat; // 设置为扁平样式,去除边框
\
// 创建一个调色板对象
QPalette buttonPalette = QApplication::style()->standardPalette();
// 设置文本颜色为红色
buttonPalette.setColor(QPalette::ButtonText, Qt::red);
// 将调色板应用到按钮样式选项中
deleteButtonOption.palette = buttonPalette;
QApplication::style()->drawControl(QStyle::CE_PushButton, &deleteButtonOption, painter);
}
else
{
QStyledItemDelegate::paint(painter, option, index);
}
}
// 处理鼠标事件,判断按钮点击
bool editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index)
{
if (index.column() == 5 && event->type() == QEvent::MouseButtonPress)
{
QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event);
// 判断是否点击编辑按钮区域
// QRect editRect = option.rect;
// editRect.setWidth(editRect.width() * 0.4);
// if (editRect.contains(mouseEvent->pos()))
// {
// emit editButtonClicked(index);
// return true;
// }
// 判断是否点击删除按钮区域
// QRect deleteRect = option.rect;
// deleteRect.setX(deleteRect.x() + deleteRect.width() * 0.4);
// deleteRect.setWidth(deleteRect.width() * 0.6);
// if (deleteRect.contains(mouseEvent->pos()))
// {
// emit deleteButtonClicked(index);
// return true;
// }
QRect cellRect = option.rect; // 使用更表意清晰的变量名表示单元格矩形区域
if (cellRect.contains(mouseEvent->pos()))
{
emit deleteButtonClicked(index);
return true;
}
}
return QStyledItemDelegate::editorEvent(event, model, option, index);
}
};
namespace Ui {
class setupuers;
}
class setupuers : public QWidget
{
Q_OBJECT
public:
explicit setupuers(QWidget *parent = nullptr);
~setupuers();
QSqlQuery query;
void getxinzeng();
private slots:
// 新增槽函数,用于处理编辑按钮点击事件
void on_pushButton_clicked();
void on_pushButton_6_clicked();
void on_pushButton_3_clicked();
void on_pushButton_4_clicked();
void bianji(const QModelIndex& index);
void shanchu(const QModelIndex& index);
void on_pushButton_5_clicked();
void on_pushButton_7_clicked();
void getkaishi(QString str);
void getkaishii(QString str);
private:
date *m_date;
datee *m_datee;
void getshui();
QString gettime();
QSqlTableModel* model;
QSqlTableModel* model2;
QWidget mask_window;
void addtable();
addusers * m_addusers;
ButtonDelegate* delegate = new ButtonDelegate;
//MyTableView* tableView = new MyTableView;
Ui::setupuers *ui;
signals:
void renyuan();
};
#endif // SETUPUERS_H