2024-09-12 16:23:44 +08:00
|
|
|
|
#include "devicepropertypage.h"
|
|
|
|
|
|
|
|
|
|
#include <QGuiApplication>
|
|
|
|
|
#include <QTimer>
|
|
|
|
|
#include <QMessageBox>
|
|
|
|
|
#include <QTableView>
|
|
|
|
|
#include <QVBoxLayout>
|
|
|
|
|
#include <QPushButton>
|
|
|
|
|
#include <QScrollBar>
|
2024-09-13 12:53:02 +08:00
|
|
|
|
#include <QHeaderView>
|
2024-09-12 16:23:44 +08:00
|
|
|
|
|
|
|
|
|
#include "globalparameters.h"
|
|
|
|
|
#include "mytablemodel.h"
|
|
|
|
|
|
|
|
|
|
DevicePropertyPage::DevicePropertyPage(QWidget *parent) :
|
|
|
|
|
QWidget(parent),m_pTableView(nullptr),m_pButton(nullptr)
|
|
|
|
|
{
|
2024-09-13 12:53:02 +08:00
|
|
|
|
InitializeTable();
|
2024-09-12 16:23:44 +08:00
|
|
|
|
|
|
|
|
|
m_pTimer = new QTimer(this);
|
|
|
|
|
connect(m_pTimer, SIGNAL(timeout()), this, SLOT(handleTimeout()));
|
|
|
|
|
//m_pTimer->start(AppData::getInstance()->nTimeOut);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DevicePropertyPage::~DevicePropertyPage()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DevicePropertyPage::handleTimeout()
|
|
|
|
|
{
|
|
|
|
|
if(m_pTimer->isActive())
|
|
|
|
|
{
|
|
|
|
|
m_pTimer->stop();
|
|
|
|
|
|
|
|
|
|
Refresh();
|
|
|
|
|
|
2024-09-13 12:53:02 +08:00
|
|
|
|
int nInterval = 5000;
|
2024-09-12 16:23:44 +08:00
|
|
|
|
m_pTimer->start(nInterval*1000);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DevicePropertyPage::InitializeTable()
|
|
|
|
|
{
|
|
|
|
|
m_myModel = new MyTableModel(this);
|
|
|
|
|
m_myModel->setHeadData(AppData::getInstance()->lstDataTableHeaderText);
|
|
|
|
|
|
|
|
|
|
m_pTableView = new QTableView(this);
|
|
|
|
|
m_pButton = new QPushButton(tr("Refresh"), this);
|
|
|
|
|
|
|
|
|
|
// 创建主布局
|
|
|
|
|
QVBoxLayout *mainLayout = new QVBoxLayout(this);
|
|
|
|
|
|
2024-09-13 12:53:02 +08:00
|
|
|
|
//m_pTableView->setModel(m_myModel);
|
|
|
|
|
|
|
|
|
|
AppCommon::getInstance()->InitializeTableView(m_myModel,m_pTableView);
|
|
|
|
|
|
|
|
|
|
|
2024-09-12 16:23:44 +08:00
|
|
|
|
|
|
|
|
|
mainLayout->addWidget(m_pTableView);
|
|
|
|
|
|
|
|
|
|
// 创建一个水平布局来包含按钮
|
|
|
|
|
QHBoxLayout *buttonLayout = new QHBoxLayout();
|
|
|
|
|
buttonLayout->addStretch(); // 让按钮保持在右侧
|
|
|
|
|
buttonLayout->addWidget(m_pButton);
|
|
|
|
|
buttonLayout->setContentsMargins(0, 0, 0, 0); // 取消按钮的边距
|
|
|
|
|
|
|
|
|
|
// 将表格视图和按钮布局添加到主布局
|
|
|
|
|
mainLayout->addLayout(buttonLayout);
|
|
|
|
|
|
|
|
|
|
mainLayout->setContentsMargins(0, 0, 0, 0); // 取消主布局的边距
|
|
|
|
|
mainLayout->setSpacing(10); // 取消布局间的间距
|
|
|
|
|
|
|
|
|
|
// 设置固定大小和位置的按钮
|
|
|
|
|
m_pButton->setFixedSize(100, 30); // 设置按钮的固定大小
|
|
|
|
|
|
|
|
|
|
// 连接信号和槽
|
|
|
|
|
connect(m_pTableView, &QTableView::doubleClicked, this, &DevicePropertyPage::onTableViewDoubleClicked);
|
|
|
|
|
connect(m_pButton, &QPushButton::clicked, this, &DevicePropertyPage::onButtonClicked);
|
2024-09-13 12:53:02 +08:00
|
|
|
|
|
|
|
|
|
setLayout(mainLayout);
|
2024-09-12 16:23:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DevicePropertyPage::Refresh()
|
|
|
|
|
{
|
|
|
|
|
QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
|
|
|
|
TableData tbl_data;
|
|
|
|
|
if (Fetch(tbl_data))
|
|
|
|
|
{
|
|
|
|
|
m_myModel->setModelData(tbl_data);
|
|
|
|
|
}
|
|
|
|
|
QGuiApplication::restoreOverrideCursor();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DevicePropertyPage::setBaseType(unsigned int base, unsigned int mask)
|
|
|
|
|
{
|
|
|
|
|
filterBaseType = base;
|
|
|
|
|
mask_code = mask;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DevicePropertyPage::onButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
m_pTimer->stop();
|
|
|
|
|
|
|
|
|
|
Refresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DevicePropertyPage::onTableViewDoubleClicked(const QModelIndex &index)
|
|
|
|
|
{
|
|
|
|
|
//QAbstractItemModel *model=ui->tableView->model();
|
|
|
|
|
MyTableModel *model = (MyTableModel *)m_pTableView->model();
|
|
|
|
|
QModelIndex mindex = model->index(index.row(),7); //index.row()为算选择的行号。7为所选中行的第8列。。
|
|
|
|
|
QVariant datatemp=model->data(mindex);
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-13 12:53:02 +08:00
|
|
|
|
void DevicePropertyPage::resizeEvent(QResizeEvent *event)
|
2024-09-12 16:23:44 +08:00
|
|
|
|
{
|
2024-09-13 12:53:02 +08:00
|
|
|
|
QWidget::resizeEvent(event);
|
|
|
|
|
#if 0
|
|
|
|
|
// 获取当前QTableView的总宽度
|
|
|
|
|
int currentTotalWidth = m_pTableView->viewport()->width();
|
|
|
|
|
|
|
|
|
|
// 计算总的初始宽度
|
|
|
|
|
int initialTotalWidth = 0;
|
|
|
|
|
for (int width : columnWidths) {
|
|
|
|
|
initialTotalWidth += width;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 计算比例因子
|
|
|
|
|
double scaleFactor = static_cast<double>(currentTotalWidth) / initialTotalWidth;
|
|
|
|
|
|
|
|
|
|
// 重新设置列宽,按比例调整
|
|
|
|
|
for (int i = 0; i < columnWidths.size(); ++i) {
|
|
|
|
|
int newWidth = static_cast<int>(columnWidths[i] * scaleFactor);
|
|
|
|
|
m_pTableView->setColumnWidth(i, newWidth);
|
2024-09-12 16:23:44 +08:00
|
|
|
|
}
|
2024-09-13 12:53:02 +08:00
|
|
|
|
#endif
|
2024-09-12 16:23:44 +08:00
|
|
|
|
}
|
|
|
|
|
|