Newer
Older
AutoCalibrationXC / infomation / InfoMainForm.cpp
#include "InfoMainForm.h"
#include "ui_InfoMainForm.h"

InfoMainForm::InfoMainForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::InfoMainForm)
{
    ui->setupUi(this);

    initForm();
    initSubMenuForms();
    initMenuButtons();

    ui->menuDeptTask->click();
}

InfoMainForm::~InfoMainForm()
{
    delete ui;
}

void InfoMainForm::initForm()
{
    // 加载样式表
    QString qssStyle = QssFileUtils::loadQssFileContent(QApplication::applicationDirPath() + "/qss/infoMain.css");
    if (qssStyle.isEmpty() == false) {
        this->setStyleSheet(qssStyle); // 仅本窗口生效
    }

    ui->scrollArea->setWindowFlags(Qt::FramelessWindowHint); // 设置无边框
}
void InfoMainForm::initSubMenuForms()
{
    fmMyTask = new MyTaskForm(this);
    fmDeptTask = new DeptTaskForm(this);
    fmNewTask = new NewTaskForm(this);

    ui->wdgtInfoTable->insertWidget(0, fmDeptTask);
    ui->wdgtInfoTable->insertWidget(1, fmMyTask);
    ui->wdgtInfoTable->insertWidget(2, fmNewTask);
}
void InfoMainForm::initMenuButtons()
{
    // 查找所有 QPushButton 类型的子控件
    QButtonGroup * funcButtGroup = new QButtonGroup(); // buttonGroup用于checked状态互斥
    QList<QToolButton *> buttList = ui->wdgtMenu->findChildren<QToolButton *>();
    for (int i = 0; i < buttList.size(); i++) {
        QToolButton * menuButt = buttList.at(i);
        menuButt->setProperty("index", i);
        menuButt->setCheckable(true);
        funcButtGroup->addButton(menuButt);
        connect(menuButt, &QToolButton::clicked, this, &InfoMainForm::onMenuButtonsAction);
    }
}

void InfoMainForm::onMenuButtonsAction()
{
    QToolButton *btn = qobject_cast<QToolButton*>(sender());
    if(btn) {
        btn->setChecked(true);
        ui->wdgtInfoTable->setCurrentIndex(btn->property("index").toInt());
    }
}