From cb52a6bd2966d895d20da4ab7d3147bdc0a80c00 Mon Sep 17 00:00:00 2001 From: duanshengchao <519970194@qq.com> Date: Fri, 19 Sep 2025 17:45:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E4=B8=BB=E7=AA=97=E5=8F=A3=E5=8F=8A=E5=85=B6=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/alarmEventDataView.h | 69 +- include/alarmEventGlobal.h | 2 +- include/alarmEventMainDialog.h | 6 +- include/dashboardFrame.h | 4 + source/alarmEventDataView.cpp | 138 ++- source/alarmEventMainDialog.cpp | 25 +- source/dashboardFrame.cpp | 51 +- ui/alarmEventMainDialog.ui | 1684 +++++++++++++++++-------------- 8 files changed, 1199 insertions(+), 780 deletions(-) diff --git a/include/alarmEventDataView.h b/include/alarmEventDataView.h index ab57a9e..116ac82 100644 --- a/include/alarmEventDataView.h +++ b/include/alarmEventDataView.h @@ -2,8 +2,73 @@ #define ALARMEVENTDATAVIEW_H #include +#include +#include +#include + +class AlarmEventDataModel : public QAbstractTableModel +{ + Q_OBJECT + +public: + struct RowData + { + QVector values; + }; + + struct PaginationInfo + { + int totalEntries; + int entriesPerpage; + int totalPages; + int currentPage; + }; + + struct SectionData + { + int width = -1; + QString text; + + SectionData(QString t, int w) + :text(t), + width(w){} + }; + + explicit AlarmEventDataModel(QObject* parent = nullptr); + ~AlarmEventDataModel(); + + QModelIndex index(int row, int column, const QModelIndex& parent) const override; + QVariant data(const QModelIndex& index, int role) const override; + QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + //bool setData(const QModelIndex& index, const QVariant &value, int role = Qt::EditRole) override; + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + int columnCount(const QModelIndex& parent = QModelIndex()) const override; + Qt::ItemFlags flags(const QModelIndex& index) const override; + +private: + void iniHeaderData(); + void updateCurPageData(); //更新当前页的数据 + void updateTotalCount(); //更新总记录数 + + QVector m_curPageData; + QVector m_headerData; + PaginationInfo m_paginationInfo; +}; + +class AlarmEventDataDelegate : public QStyledItemDelegate +{ + Q_OBJECT + +public: + explicit AlarmEventDataDelegate(QTableView* view, QObject* parent = nullptr); + ~AlarmEventDataDelegate(); + + void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override; + +private: + QTableView* m_tableView; +}; -class QTableView; class QVBoxLayout; class AlarmEventDataView : public QWidget { @@ -15,6 +80,8 @@ public: private: QTableView* m_tableView; + AlarmEventDataModel* m_tableModel; + AlarmEventDataDelegate* m_delegate; QVBoxLayout* m_vLayout; }; diff --git a/include/alarmEventGlobal.h b/include/alarmEventGlobal.h index ef6ba8f..22bc35e 100644 --- a/include/alarmEventGlobal.h +++ b/include/alarmEventGlobal.h @@ -4,7 +4,7 @@ #include #include -enum MainDialogType +enum MainDialogMode { RealTime = 0, Historical diff --git a/include/alarmEventMainDialog.h b/include/alarmEventMainDialog.h index 318630c..e4e6d84 100644 --- a/include/alarmEventMainDialog.h +++ b/include/alarmEventMainDialog.h @@ -15,9 +15,11 @@ class AlarmEventMainDialog : public QDialog Q_OBJECT public: - AlarmEventMainDialog(MainDialogType type, QWidget *parent = nullptr); + AlarmEventMainDialog(QWidget *parent = nullptr); ~AlarmEventMainDialog(); + void setMode(MainDialogMode mode); + signals: void sgl_hide(); @@ -26,6 +28,8 @@ public slots: private: Ui::alarmEventMainDialog* ui; + MainDialogMode m_mode; + }; #endif diff --git a/include/dashboardFrame.h b/include/dashboardFrame.h index f294623..05175fb 100644 --- a/include/dashboardFrame.h +++ b/include/dashboardFrame.h @@ -22,6 +22,7 @@ class DateTimeWidget; class TimeLineWidget; class DataPanel; class dpConfigurationDialog; +class AlarmEventMainDialog; namespace dashboardFrame { enum frameType @@ -74,6 +75,8 @@ public slots: void onBtnClicked_addDataPanel(); void onBtnClicked_dashboardList(); void onBtnClicked_dashboardTab(); + void onBtnClicked_showRealtimeEvents(); + void onBtnClicked_showHistoricalEvents(); void onMenuAction_dashboardList(); @@ -110,6 +113,7 @@ private: TimeLineWidget* m_pTimeLineWidget; dpConfigurationDialog* m_pPanelConfigurationDialog; + AlarmEventMainDialog* m_pAlarmEventMainDialog; QTimer* m_pTimer_RealTime; }; diff --git a/source/alarmEventDataView.cpp b/source/alarmEventDataView.cpp index 2add960..6b5633e 100644 --- a/source/alarmEventDataView.cpp +++ b/source/alarmEventDataView.cpp @@ -1,8 +1,138 @@ #include "alarmEventDataView.h" -#include #include #include +#include +///////------AlarmEventDataModel----- +AlarmEventDataModel::AlarmEventDataModel(QObject* parent) + : QAbstractTableModel(parent) +{ + iniHeaderData(); +} + +AlarmEventDataModel::~AlarmEventDataModel() +{} + +QModelIndex AlarmEventDataModel::index(int row, int column, const QModelIndex& parent) const +{ + if(!hasIndex(row, column, parent)) + return QModelIndex(); + + if(column > m_headerData.count()) + return QModelIndex(); + + return createIndex(row, column); +} + +QVariant AlarmEventDataModel::data(const QModelIndex& index, int role) const +{ + if(index.isValid()) + return QVariant(); + + int row = index.row(); + int col = index.column(); + int globalRow = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerpage + row; + + switch (role) + { + case Qt::DisplayRole: + { + if(index.column() == 0) //第一列显示序号 + return QString::number(globalRow + 1); + else + { + int dataCol = col - 1; + const RowData& rowData = m_curPageData[row]; + return rowData.values.value(dataCol); + } + } + case Qt::TextAlignmentRole: + return Qt::AlignCenter; //居中展示 + default: + return QVariant(); + } +} + +QVariant AlarmEventDataModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if(orientation == Qt::Horizontal && role == Qt::DisplayRole) + return m_headerData.at(section).text; + + return QAbstractItemModel::headerData(section, orientation, role); +} + +int AlarmEventDataModel::rowCount(const QModelIndex& parent) const +{ + return m_curPageData.count(); +} + +int AlarmEventDataModel::columnCount(const QModelIndex& parent) const +{ + return m_headerData.isEmpty() ? 0 : m_headerData.count(); +} + +Qt::ItemFlags AlarmEventDataModel::flags(const QModelIndex& index) const +{ + if(!index.isValid()) + return Qt::NoItemFlags; + + Qt::ItemFlags flags = QAbstractTableModel::flags(index); + flags |= Qt::ItemIsEditable; //不可编辑 + + return flags; +} + +void AlarmEventDataModel::iniHeaderData() +{ + m_headerData.emplace_back(SectionData("序号", 90)); + m_headerData.emplace_back(SectionData("接收时间", 270)); + m_headerData.emplace_back(SectionData("SOE时间", 270)); + m_headerData.emplace_back(SectionData("厂站", 200)); + m_headerData.emplace_back(SectionData("间隔", 200)); + m_headerData.emplace_back(SectionData("信息", -1)); + m_headerData.emplace_back(SectionData("类型", 200)); + m_headerData.emplace_back(SectionData("等级", 150)); + m_headerData.emplace_back(SectionData("确认状态", 150)); + m_headerData.emplace_back(SectionData("操作", 300)); +} + + +///////------AlarmEventDataDelegate----- +AlarmEventDataDelegate::AlarmEventDataDelegate(QTableView* view, QObject* parent) + : QStyledItemDelegate(parent) + ,m_tableView(view) +{} + +AlarmEventDataDelegate::~AlarmEventDataDelegate() +{} + +void AlarmEventDataDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const +{ + //根据行号设置交替颜色 + QStyleOptionViewItem opt = option; + initStyleOption(&opt, index); + if((index.row() + 1) % 2 == 0) + painter->fillRect(opt.rect, QColor(11, 26, 33, 200)); + else + painter->fillRect(opt.rect, QColor(11, 26, 33, 0)); + + //绘制单元格边框(只绘制右边框,每行的最后一个单元格不绘制) + if(m_tableView) + { + painter->save(); + QPen pen(QColor(60,60,60), 1); + painter->setPen(pen); + if(index.column() != m_tableView->model()->columnCount() - 1) + painter->drawLine(opt.rect.topRight(), opt.rect.bottomRight()); + painter->restore(); + } + + //绘制默认内容 + QStyledItemDelegate::paint(painter, option, index); +} + + +///////------AlarmEventDataView----- AlarmEventDataView::AlarmEventDataView(QWidget* parent) : QWidget(parent) { @@ -12,6 +142,12 @@ AlarmEventDataView::AlarmEventDataView(QWidget* parent) m_tableView->setShowGrid(false); //m_tableView->setStyleSheet("QHeaderView{background-color: rgb(40, 40, 40);} QHeaderView::section{background-color:transparent;}"); + m_tableModel = new AlarmEventDataModel(this); + m_tableView->setModel(m_tableModel); + + m_delegate = new AlarmEventDataDelegate(m_tableView, this); + m_tableView->setItemDelegate(m_delegate); + m_vLayout = new QVBoxLayout(this); m_vLayout->setSpacing(0); m_vLayout->setContentsMargins(0, 0, 0, 0); diff --git a/source/alarmEventMainDialog.cpp b/source/alarmEventMainDialog.cpp index 7b6623f..dad2496 100644 --- a/source/alarmEventMainDialog.cpp +++ b/source/alarmEventMainDialog.cpp @@ -1,16 +1,15 @@ #include "alarmEventMainDialog.h" #include "ui_alarmEventMainDialog.h" -AlarmEventMainDialog::AlarmEventMainDialog(MainDialogType type, QWidget *parent) +AlarmEventMainDialog::AlarmEventMainDialog(QWidget *parent) : QDialog(parent) , ui(new Ui::alarmEventMainDialog) { ui->setupUi(this); + setWindowFlags(Qt::FramelessWindowHint); + setAttribute(Qt::WA_TranslucentBackground); - if(type == RealTime) - ui->dataFilteringPanel->setVisible(false); - else - ui->dataFilteringPanel->setVisible(true); + connect(ui->btnClose, &QPushButton::clicked, this, &AlarmEventMainDialog::onBtnClicked_close); } AlarmEventMainDialog::~AlarmEventMainDialog() @@ -18,6 +17,22 @@ AlarmEventMainDialog::~AlarmEventMainDialog() delete ui; } +void AlarmEventMainDialog::setMode(MainDialogMode mode) +{ + if(mode == RealTime) + { + ui->label_WindowlTitle->setText("实时报警"); + ui->dataFilteringPanel->setVisible(false); + } + else + { + ui->label_WindowlTitle->setText("历史事件"); + ui->dataFilteringPanel->setVisible(true); + } + + m_mode = mode; +} + void AlarmEventMainDialog::onBtnClicked_close() { //reject(); diff --git a/source/dashboardFrame.cpp b/source/dashboardFrame.cpp index 232c8f4..a453c2c 100644 --- a/source/dashboardFrame.cpp +++ b/source/dashboardFrame.cpp @@ -13,6 +13,7 @@ #include "dataPanel/dpConfigurationDialog.h" #include "dateTimeWidget.h" #include "util/TimeLine/timeLineWidget.h" +#include "alarmEventMainDialog.h" #include #include @@ -33,6 +34,7 @@ DashboardFrame::DashboardFrame(const QString& strName, dashboardFrame::frameType , m_curOperationDashboard(nullptr) , m_pPanelSelectionDialog(nullptr) , m_pPanelConfigurationDialog(nullptr) + , m_pAlarmEventMainDialog(nullptr) { ui->setupUi(this); setAcceptDrops(true); @@ -78,11 +80,17 @@ DashboardFrame::DashboardFrame(const QString& strName, dashboardFrame::frameType connect(ui->btnAddPanel, SIGNAL(clicked()), this, SLOT(onBtnClicked_addDataPanel())); //connect(ui->btnDashboradList1, SIGNAL(clicked()), this, SLOT(onBtnClicked_dashboardList())); connect(ui->btnDashboradList2, SIGNAL(clicked()), this, SLOT(onBtnClicked_dashboardList())); + connect(ui->btnAlarm, SIGNAL(clicked()), this, SLOT(onBtnClicked_showRealtimeEvents())); + connect(ui->btnAllEvent, SIGNAL(clicked()), this, SLOT(onBtnClicked_showHistoricalEvents())); m_pTimer_RealTime = new QTimer(this); m_pTimer_RealTime->setTimerType(Qt::PreciseTimer); //设置成高精度类型,默认为Qt::CoarseTimer(粗糙定时器) connect(m_pTimer_RealTime, SIGNAL(timeout()), this, SLOT(onTimeout_realTime())); m_pTimer_RealTime->start(1000); + + //暂时放弃这两个按钮的逻辑 + ui->btnShowDashboards->setVisible(false); + ui->btnShowNotifications->setVisible(false); } DashboardFrame::~DashboardFrame() @@ -489,7 +497,8 @@ void DashboardFrame::onBtnClicked_addDashboard() m_pDashboardNamingDialog = new DashboardNamingDialog(this); m_pDashboardNamingDialog->installEventFilter(this); connect(m_pDashboardNamingDialog, SIGNAL(sgl_hide()), this, SLOT(onSignal_subDialogClose())); - connect(m_pDashboardNamingDialog, SIGNAL(dashboardName(const QString&, const QString&)), this, SLOT(onSignal_dashboardNaming(const QString&, const QString&))); + connect(m_pDashboardNamingDialog, &DashboardNamingDialog::dashboardName, this, &DashboardFrame::onSignal_dashboardNaming); + //connect(m_pDashboardNamingDialog, SIGNAL(dashboardName(const QString&, const QString&)), this, SLOT(onSignal_dashboardNaming(const QString&, const QString&))); } showTransparentMask(); @@ -567,6 +576,44 @@ void DashboardFrame::onBtnClicked_dashboardTab() setCurrentDashboard(strName); } +void DashboardFrame::onBtnClicked_showRealtimeEvents() +{ + if(m_pAlarmEventMainDialog == nullptr) + { + m_pAlarmEventMainDialog = new AlarmEventMainDialog(this); + connect(m_pAlarmEventMainDialog, SIGNAL(sgl_hide()), this, SLOT(onSignal_subDialogClose())); + } + + m_pAlarmEventMainDialog->setMode(RealTime); + int nWidth = this->width() * 0.8; + int nHeight = this->height() * 0.8; + int nX = this->geometry().x() + (this->width() - nWidth) * 0.5; + int nY = this->geometry().y() + (this->height() - nHeight) * 0.5; + showTransparentMask(); + m_pAlarmEventMainDialog->setGeometry(nX, nY, nWidth, nHeight); + m_pAlarmEventMainDialog->show(); + m_pAlarmEventMainDialog->raise(); +} + +void DashboardFrame::onBtnClicked_showHistoricalEvents() +{ + if(m_pAlarmEventMainDialog == nullptr) + { + m_pAlarmEventMainDialog = new AlarmEventMainDialog(this); + connect(m_pAlarmEventMainDialog, SIGNAL(sgl_hide()), this, SLOT(onSignal_subDialogClose())); + } + + m_pAlarmEventMainDialog->setMode(Historical); + int nWidth = this->width() * 0.8; + int nHeight = this->height() * 0.8; + int nX = this->geometry().x() + (this->width() - nWidth) * 0.5; + int nY = this->geometry().y() + (this->height() - nHeight) * 0.5; + showTransparentMask(); + m_pAlarmEventMainDialog->setGeometry(nX, nY, nWidth, nHeight); + m_pAlarmEventMainDialog->show(); + m_pAlarmEventMainDialog->raise(); +} + void DashboardFrame::onMenuAction_dashboardList() { QAction* action = qobject_cast(sender()); @@ -639,7 +686,7 @@ void DashboardFrame::onSignal_renameDashboard() { m_pDashboardNamingDialog = new DashboardNamingDialog(this); connect(m_pDashboardNamingDialog, SIGNAL(dlgHide()), this, SLOT(onSignal_subDialogClose())); - connect(m_pDashboardNamingDialog, SIGNAL(dashboardName(const QString&, const QString&)), this, SLOT(onSignal_dashboardNaming(const QString&, const QString&))); + connect(m_pDashboardNamingDialog, &DashboardNamingDialog::dashboardName, this, &DashboardFrame::onSignal_dashboardNaming); } showTransparentMask(); diff --git a/ui/alarmEventMainDialog.ui b/ui/alarmEventMainDialog.ui index 538ec51..01340b2 100644 --- a/ui/alarmEventMainDialog.ui +++ b/ui/alarmEventMainDialog.ui @@ -6,17 +6,18 @@ 0 0 - 1496 - 1006 + 1539 + 1005 Dialog - QDialog + QWidget #contentWidget { -background-color:rgba(36,43,50,250); +border:1px solid rgb(76,88,105); +background-color: rgb(33, 39, 46); } QPushButton @@ -94,46 +95,64 @@ color: rgb(250, 250, 250); background-color: rgba(43, 102, 158, 80); } - + - 5 + 0 - 30 + 0 - 7 + 0 - 7 + 0 - 5 + 0 - - - 0 - - - 0 - - - - - - 0 - 60 - - - - - 16777215 - 60 - - - - QWidget #topPanel + + + + 5 + + + 30 + + + 7 + + + 7 + + + 7 + + + + + 15 + + + 0 + + + + + + 0 + 70 + + + + + 16777215 + 70 + + + + QWidget #topPanel { border:1px solid rgb(67,160,249); border-left:0px; @@ -142,506 +161,630 @@ border-right:0px; } - - - - 0 - - - - - color: rgb(250, 250, 250); + + + + 15 + + + 0 + + + + + color: rgb(250, 250, 250); font: 700 18pt "微软雅黑"; - - - 历史事件 - - - - - - - - 261 - 0 - - - - - 261 - 16777215 - - - - - - 40 - 10 - 101 - 31 - - - - QPushButton + + + 历史事件 + + + + + + + + 261 + 0 + + + + + 261 + 16777215 + + + + + + 40 + 10 + 101 + 31 + + + + QPushButton { icon-size:20px; icon: url(:/images/icon_checked.png); } - - - 全部确认 - - - - - - 170 - 10 - 81 - 31 - - - - QPushButton + + + 全部确认 + + + + + + 170 + 10 + 81 + 31 + + + + QPushButton { icon-size:20px; icon: url(:/images/icon_configuration.png); } - - - 设置 - - + + + 配置 + + + + + - - - - - - - - 0 - 96 - - - - - 16777215 - 96 - - - - QWidget #dataFilteringPanel + + + + + 0 + 81 + + + + + 16777215 + 81 + + + + QWidget #dataFilteringPanel { } - - - - 35 - - - 8 - - - 10 - - - 8 - - - 10 - - - - - 3 - - 5 - - - - - - 81 - 31 - - - - - 81 - 31 - - - - 厂站名称: - - - - - - - - 0 - 31 - - - - - 16777215 - 31 - - - - - 请选择 + + + 60 + + + 8 + + + 0 + + + 8 + + + 0 + + + + + 3 - - - - - - - - 81 - 31 - - - - - 81 - 31 - - - - 间隔名称: - - - - - - - - 0 - 31 - - - - - 16777215 - 31 - - - - - 请选择 + + 10 - - - - + + + + + 81 + 31 + + + + + 81 + 31 + + + + 厂站名称: + + + + + + + + 0 + 31 + + + + + 16777215 + 31 + + + + + 请选择 + + + + + + + + + 81 + 31 + + + + + 81 + 31 + + + + 间隔名称: + + + + + + + + 0 + 31 + + + + + 16777215 + 31 + + + + + 请选择 + + + + + + + + + + 3 + + + 10 + + + + + + 81 + 31 + + + + + 81 + 31 + + + + 告警类型: + + + + + + + + 0 + 31 + + + + + 16777215 + 31 + + + + + 请选择 + + + + + + + + + 81 + 31 + + + + + 81 + 31 + + + + 告警等级: + + + + + + + + 0 + 31 + + + + + 16777215 + 31 + + + + + 请选择 + + + + + + + + + + 3 + + + 10 + + + + + + 81 + 31 + + + + + 81 + 31 + + + + 确认状态: + + + + + + + + 0 + 31 + + + + + 16777215 + 31 + + + + + 请选择 + + + + + + + + + 81 + 31 + + + + + 81 + 31 + + + + 告警信息: + + + + + + + + 0 + 31 + + + + + 16777215 + 31 + + + + + + + + + + 3 + + + 10 + + + + + + 81 + 31 + + + + + 81 + 31 + + + + 最早时间: + + + + + + + + 0 + 31 + + + + + 16777215 + 31 + + + + 2025/09/16 10:06:12 + + + true + + + + + + + + 81 + 31 + + + + + 81 + 31 + + + + 最后时间: + + + + + + + + 0 + 31 + + + + + 16777215 + 31 + + + + 2025/09/16 10:07:12 + + + true + + + + + + + - - - 3 - - - 5 - - - - - - 81 - 31 - - - - - 81 - 31 - - - - 告警类型: - - - - - - - - 0 - 31 - - - - - 16777215 - 31 - - - - - 请选择 - - - - - - - - - 81 - 31 - - - - - 81 - 31 - - - - 告警等级: - - - - - - - - 0 - 31 - - - - - 16777215 - 31 - - - - - 请选择 - - - - - - - - - - 3 - - - 5 - - - - - - 81 - 31 - - - - - 81 - 31 - - - - 确认状态: - - - - - - - - 0 - 31 - - - - - 16777215 - 31 - - - - - 请选择 - - - - - - - - - 81 - 31 - - - - - 81 - 31 - - - - 告警信息: - - - - - - - - 0 - 31 - - - - - 16777215 - 31 - - - - - - - - - - 3 - - - 5 - - - - - - 81 - 31 - - - - - 81 - 31 - - - - 最早时间: - - - - - - - - 0 - 31 - - - - - 16777215 - 31 - - - - 2025/09/16 10:06:12 - - - true - - - - - - - - 81 - 31 - - - - - 81 - 31 - - - - 最后时间: - - - - - - - - 0 - 31 - - - - - 16777215 - 31 - - - - 2025/09/16 10:07:12 - - - true - - - - - - - - - - - - QWidget #tableView + + + QWidget #tableView +{ + background-color: rgba(54, 62, 74,90); +} + +QHeaderView +{ + background-color: rgb(11, 26, 33); +} +QHeaderView::section +{ + font: 700 12pt "微软雅黑"; + color: rgb(250, 250, 250); + background-color:transparent; + border:0px; + border-right: 1px solid rgb(60,60,60); +} +QHeaderView::section:horizontal:last +{ + border-right: 0px; +} + +QTableView +{ + outline:0px; + background-color: transparent; +} +QTableView::item +{ + font: 12pt "黑体"; + color: rgb(250, 250, 250); + background-color:transparent; + border:0px; + border-right: 1px solid rgb(60,60,60); +} +QTableView::item:hover +{ +} +QTableView::item:selected { - background-color: rgba(54, 62, 74,100); } - - - - - - - - 0 - 31 - - - - - 16777215 - 31 - - - - QPushButton + + + + + 40 + 50 + 931 + 411 + + + + Qt::TextElideMode::ElideNone + + + false + + + false + + + + 新建行 + + + + + 新建行 + + + + + 新建行 + + + + + 序号 + + + + + 时间 + + + + + 厂站 + + + + + 详情 + + + + + 类型 + + + + + 级别 + + + + + 操作 + + + + + 1 + + + + + 2025-09-17 16:51:01 + + + + + 灵州换流站 + + + + + + + + + + 0 + 26 + + + + + 16777215 + 26 + + + + QPushButton { border:1px solid rgb(100,100,100); } @@ -653,245 +796,245 @@ QPushButton:pressed { border:1px solid rgb(100,100,100); } - - - - true - - - - 0 - 8 - 21 - 21 - - - - - 21 - 21 - - - - - 21 - 21 - - - - 第一页 - - - - - - - - - - :/images/icon_first.png:/images/icon_first.png - - - - 16 - 16 - - - - - - - 170 - 8 - 131 - 21 - - - - font: 11pt "黑体"; - - - 共100条记录 - - - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter - - - - - true - - - - 30 - 8 - 21 - 21 - - - - - 21 - 21 - - - - - 21 - 21 - - - - 第一页 - - - - - - - - - - :/images/icon_previous.png:/images/icon_previous.png - - - - 16 - 16 - - - - - - true - - - - 105 - 8 - 21 - 21 - - - - - 21 - 21 - - - - - 21 - 21 - - - - 第一页 - - - - - - - - - - :/images/icon_next.png:/images/icon_next.png - - - - 16 - 16 - - - - - - true - - - - 135 - 8 - 21 - 21 - - - - - 21 - 21 - - - - - 21 - 21 - - - - 第一页 - - - - - - - - - - :/images/icon_last.png:/images/icon_last.png - - - - 16 - 16 - - - - - - - 60 - 9 - 36 - 20 - - - - font: 11pt "黑体"; + + + + true + + + + 0 + 0 + 21 + 21 + + + + + 21 + 21 + + + + + 21 + 21 + + + + 第一页 + + + + + + + + + + :/images/icon_first.png:/images/icon_first.png + + + + 16 + 16 + + + + + + + 170 + 0 + 131 + 21 + + + + font: 11pt "黑体"; + + + 共100条记录 + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter + + + + + true + + + + 30 + 0 + 21 + 21 + + + + + 21 + 21 + + + + + 21 + 21 + + + + 第一页 + + + + + + + + + + :/images/icon_previous.png:/images/icon_previous.png + + + + 16 + 16 + + + + + + true + + + + 105 + 0 + 21 + 21 + + + + + 21 + 21 + + + + + 21 + 21 + + + + 第一页 + + + + + + + + + + :/images/icon_next.png:/images/icon_next.png + + + + 16 + 16 + + + + + + true + + + + 135 + 0 + 21 + 21 + + + + + 21 + 21 + + + + + 21 + 21 + + + + 第一页 + + + + + + + + + + :/images/icon_last.png:/images/icon_last.png + + + + 16 + 16 + + + + + + + 60 + 0 + 36 + 20 + + + + font: 11pt "黑体"; border:0px; padding:0px; - - - 1 - - - Qt::AlignmentFlag::AlignCenter - - - - - - - - - - - - - 24 - 24 - - - - - 24 - 24 - - - - QPushButton + + + 1 + + + Qt::AlignmentFlag::AlignCenter + + + + + + + + + + + + + 24 + 24 + + + + + 24 + 24 + + + + QPushButton { background-color:transparent; border-image: url(:/images/btn_close_default.png); @@ -904,29 +1047,32 @@ QPushButton:pressed { border-image: url(:/images/btn_close_default.png); } - - - - - - true - - - - - - - Qt::Orientation::Vertical - - - - 20 - 40 - - - - - + + + + + + true + + + + + + + Qt::Orientation::Vertical + + + + 20 + 40 + + + + + + + +