#pragma execution_character_set("utf-8") #include "frmmain.h" #include "ui_frmmain.h" #include "iconhelper.h" #include "quihelper.h" #include "frmdevice.h" #include "framelesshelper.h" frmMain::frmMain(QWidget *parent) : QWidget(parent), ui(new Ui::frmMain) { ui->setupUi(this); this->initForm(); this->initTreeWidget(); this->initTableWidget(); this->initMenu(); QTimer::singleShot(100, this, SLOT(initPanelWidget())); } frmMain::~frmMain() { delete ui; } bool frmMain::eventFilter(QObject *watched, QEvent *event) { if (event->type() == QEvent::MouseButtonDblClick) { if (watched == ui->widgetTitle) { on_btnMenu_Max_clicked(); } } return QWidget::eventFilter(watched, event); } void frmMain::initForm() { //设置无边框 QUIHelper::setFramelessForm(this); //设置图标 IconHelper::setIcon(ui->labIco, 0xf099, 35); IconHelper::setIcon(ui->btnMenu_Min, 0xf068); IconHelper::setIcon(ui->btnMenu_Max, 0xf067); IconHelper::setIcon(ui->btnMenu_Close, 0xf00d); ui->widgetTitle->installEventFilter(this); ui->widgetTitle->setProperty("form", "title"); ui->widgetTop->setProperty("nav", "top"); QFont font; font.setPixelSize(25); ui->labTitle->setFont(font); ui->labTitle->setText("智能访客管理平台"); this->setWindowTitle(ui->labTitle->text()); QSize icoSize(32, 32); int icoWidth = 85; //设置顶部导航按钮 QList tbtns = ui->widgetTop->findChildren(); foreach (QToolButton *btn, tbtns) { btn->setIconSize(icoSize); btn->setMinimumWidth(icoWidth); } QList widths; widths << 170 << 650; ui->splitterH->setSizes(widths); QList heights; heights << 400 << 200; ui->splitterV->setSizes(heights); //无边框可拉伸类 frameless = new FramelessHelper(this); //激活当前窗体 frameless->activateOn(this); //设置窗体的标题栏高度 frameless->setTitleHeight(ui->widgetTop->height()); //设置窗体可移动 frameless->setWidgetMovable(true); //设置窗体可缩放 frameless->setWidgetResizable(true); } void frmMain::initTreeWidget() { ui->treeWidget->clear(); ui->treeWidget->setHeaderLabel(" 树状列表控件"); QTreeWidgetItem *group1 = new QTreeWidgetItem(ui->treeWidget); group1->setText(0, "父元素1"); group1->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); group1->setCheckState(0, Qt::PartiallyChecked); QTreeWidgetItem *subItem11 = new QTreeWidgetItem(group1); subItem11->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); subItem11->setText(0, "子元素1"); subItem11->setCheckState(0, Qt::Checked); QTreeWidgetItem *subItem12 = new QTreeWidgetItem(group1); subItem12->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); subItem12->setText(0, "子元素2"); subItem12->setCheckState(0, Qt::Unchecked); QTreeWidgetItem *subItem13 = new QTreeWidgetItem(group1); subItem13->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); subItem13->setText(0, "子元素3"); subItem13->setCheckState(0, Qt::Unchecked); QTreeWidgetItem *group2 = new QTreeWidgetItem(ui->treeWidget); group2->setText(0, "父元素2"); group2->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); group2->setCheckState(0, Qt::Unchecked); QTreeWidgetItem *subItem21 = new QTreeWidgetItem(group2); subItem21->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); subItem21->setText(0, "子元素1"); subItem21->setCheckState(0, Qt::Unchecked); QTreeWidgetItem *subItem211 = new QTreeWidgetItem(subItem21); subItem211->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); subItem211->setText(0, "子子元素1"); subItem211->setCheckState(0, Qt::Unchecked); ui->treeWidget->expandAll(); } void frmMain::initPanelWidget() { //加载设备面板 qDeleteAll(frms); frms.clear(); for (int i = 0; i < 100; i++) { frmDevice *frm = new frmDevice; frm->setFixedHeight(100); frm->setDeviceName(QString("温湿度设备 %1").arg(i + 1)); frm->setDeviceTemp(25.8); frm->setDeviceDamp(56.5); frm->setCountAll(1024); frm->setCountNoRead(1); frms.append(frm); } ui->widgetPanel->setAutoWidth(true); ui->widgetPanel->setMargin(3); ui->widgetPanel->setSpace(3); ui->widgetPanel->setColumnCount(7); ui->widgetPanel->setWidgets(frms); } void frmMain::initTableWidget() { //设置列数和列宽 int width = 1920; ui->tableWidget->setColumnCount(5); ui->tableWidget->setColumnWidth(0, width * 0.06); ui->tableWidget->setColumnWidth(1, width * 0.10); ui->tableWidget->setColumnWidth(2, width * 0.06); ui->tableWidget->setColumnWidth(3, width * 0.10); ui->tableWidget->setColumnWidth(4, width * 0.15); ui->tableWidget->verticalHeader()->setDefaultSectionSize(25); QStringList headText; headText << "设备编号" << "设备名称" << "设备地址" << "告警内容" << "告警时间"; ui->tableWidget->setHorizontalHeaderLabels(headText); ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); ui->tableWidget->setAlternatingRowColors(true); ui->tableWidget->verticalHeader()->setVisible(false); ui->tableWidget->horizontalHeader()->setStretchLastSection(true); //设置行高 ui->tableWidget->setRowCount(300); for (int i = 0; i < 300; i++) { ui->tableWidget->setRowHeight(i, 24); QTableWidgetItem *itemDeviceID = new QTableWidgetItem(QString::number(i + 1)); QTableWidgetItem *itemDeviceName = new QTableWidgetItem(QString("测试设备%1").arg(i + 1)); QTableWidgetItem *itemDeviceAddr = new QTableWidgetItem(QString::number(i + 1)); QTableWidgetItem *itemContent = new QTableWidgetItem("防区告警"); QTableWidgetItem *itemTime = new QTableWidgetItem(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")); itemDeviceID->setTextAlignment(Qt::AlignCenter); itemDeviceName->setTextAlignment(Qt::AlignCenter); itemDeviceAddr->setTextAlignment(Qt::AlignCenter); itemContent->setTextAlignment(Qt::AlignCenter); ui->tableWidget->setItem(i, 0, itemDeviceID); ui->tableWidget->setItem(i, 1, itemDeviceName); ui->tableWidget->setItem(i, 2, itemDeviceAddr); ui->tableWidget->setItem(i, 3, itemContent); ui->tableWidget->setItem(i, 4, itemTime); } } void frmMain::initMenu() { QMenu *menu = new QMenu(this); menu->addAction("端口管理", this, SLOT(doMenu())); menu->addAction("设备管理", this, SLOT(doMenu())); menu->addAction("告警设置", this, SLOT(doMenu())); menu->addSeparator(); menu->addAction("系统设置", this, SLOT(doMenu())); menu->addAction("修改密码", this, SLOT(doMenu())); menu->addSeparator(); menu->addAction("同步间隔", this, SLOT(doMenu())); ui->btnMain->setPopupMode(QToolButton::InstantPopup); ui->btnMain->setMenu(menu); } void frmMain::doMenu() { QAction *action = (QAction *)sender(); qDebug() << QString("你选择了菜单 [%1]").arg(action->text()); } void frmMain::on_btnMenu_Min_clicked() { showMinimized(); } void frmMain::on_btnMenu_Max_clicked() { static bool max = false; static QRect location = this->geometry(); if (max) { this->setGeometry(location); } else { location = this->geometry(); this->setGeometry(QUIHelper::getScreenRect()); } max = !max; frameless->setWidgetMovable(!max); frameless->setWidgetResizable(!max); } void frmMain::on_btnMenu_Close_clicked() { close(); }