123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- #include "MainWindow.h"
- #include "LoginView.h"
- #include "AboutView.h"
- #include <DateTime/DatePicker.h>
- #include <QFramelessWindow.h>
- #include <TitleBar.h>
- #include <Navigation/NavigationInterface.h>
- #include <Widgets/StackedWidget.h>
- #include <QDebug>
- StackedWidget::StackedWidget(QWidget *parent) : QFrame(parent)
- {
- m_hBoxLayout = new QHBoxLayout(this);
- m_view = new PopUpAniStackedWidget(this);
- m_hBoxLayout->setContentsMargins(0, 0, 0, 0);
- m_hBoxLayout->addWidget(m_view);
- connect(m_view, &PopUpAniStackedWidget::currentChanged, this, [this](int index) {
- qDebug() << __FUNCTION__ << __LINE__;
- emit currentWidgetChanged(m_view->widget(index));
- });
- // setStyleSheet("background-color: rgb(0,222,222);");
- }
- void StackedWidget::addWidget(QWidget *widget)
- {
- m_view->addWidget(widget);
- }
- ///
- /// @todo widget.verticalScrollBar().setValue(0)
- ///
- void StackedWidget::setCurrentWidget(QWidget *widget, bool popOut)
- {
- if (popOut) {
- qDebug() << __FUNCTION__ << __LINE__;
- m_view->setCurrentWidget(widget, true, false, 200, QEasingCurve::InQuad);
- } else {
- qDebug() << __FUNCTION__ << __LINE__;
- m_view->setCurrentWidget(widget, false, true, 300);
- }
- }
- void StackedWidget::setCurrentIndex(int index, bool popOut)
- {
- qDebug() << __FUNCTION__ << __LINE__;
- setCurrentWidget(m_view->widget(index), popOut);
- }
- PopUpAniStackedWidget *StackedWidget::view() const
- {
- return m_view;
- }
- MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
- {
- initialize();
- initWindow();
- initLayout();
- initNavigation();
- connectSignalsAndSlots();
- }
- MainWindow::~MainWindow() { }
- void MainWindow::initialize()
- {
- m_titleBar = new StandardTitleBar(this);
- m_widgetLayout = new QHBoxLayout();
- m_stackWidget = new StackedWidget(this);
- m_naviInterface = new NavigationInterface(true, true, this);
- m_loginView = new LoginView(this);
- m_aboutView = new AboutView(this);
- // m_aboutView->setStyleSheet("background-color: rgb(222, 222, 0);");
- }
- void MainWindow::initWindow()
- {
- setMinimumSize(QSize(800, 600));
- QFramelessHelper *helper = new QFramelessHelper(this);
- helper->setTitleBar(m_titleBar);
- QWidget *w = new QWidget();
- m_hBoxLayout = new QHBoxLayout(w);
- setCentralWidget(w);
- m_titleBar->setGeometry(QRect(titleBarIndent(), 0, width() - titleBarIndent(), m_titleBar->height()));
- setWindowTitle("专家评定数据分析软件");
- QIcon icon = QIcon(":/resource/logo.png");
- m_titleBar->setIcon(icon);
- setWindowIcon(icon);
- }
- void MainWindow::initLayout()
- {
- m_hBoxLayout->setSpacing(0);
- m_hBoxLayout->setContentsMargins(0, 0, 0, 0);
- m_hBoxLayout->addWidget(m_naviInterface);
- m_hBoxLayout->addLayout(m_widgetLayout);
- m_hBoxLayout->setStretchFactor(m_widgetLayout, 1);
- m_widgetLayout->addWidget(m_stackWidget);
- m_widgetLayout->setContentsMargins(0, 32, 0, 0);
- }
- void MainWindow::initNavigation()
- {
- m_naviInterface->addSeparator();
- m_loginView->setObjectName("loginView");
- m_stackWidget->addWidget(m_loginView);
- m_naviInterface->addItem(m_loginView->objectName(), NEWFLICON(FluentIcon, HEART), "Login", this,
- SLOT(loginViewClicked()), false, NavigationItemPosition::BOTTOM);
- m_aboutView->setObjectName("aboutView");
- m_stackWidget->addWidget(m_aboutView);
- m_naviInterface->addItem(m_aboutView->objectName(), NEWFLICON(FluentIcon, INFO), "About", this,
- SLOT(aboutViewClicked()), false, NavigationItemPosition::BOTTOM);
- m_naviInterface->setDefaultRouteKey(m_loginView->objectName());
- connect(m_stackWidget, &StackedWidget::currentWidgetChanged, this, [this](QWidget *w) {
- m_naviInterface->setCurrentItem(w->objectName());
- qDebug() << "current" << m_stackWidget->view()->currentIndex();
- });
- m_naviInterface->setCurrentItem(m_loginView->objectName());
- m_stackWidget->setCurrentIndex(0);
- }
- void MainWindow::connectSignalsAndSlots()
- {
- connect(m_naviInterface, &NavigationInterface::displayModeChanged, m_titleBar, &StandardTitleBar::raise);
- }
- void MainWindow::setNaviInterfaceHidden(bool hidden)
- {
- m_naviInterface->setHidden(hidden);
- m_titleBar->setGeometry(QRect(titleBarIndent(), 0, width() - titleBarIndent(), m_titleBar->height()));
- }
- int MainWindow::titleBarIndent() const
- {
- return m_naviInterface->isHidden() ? 0 : 46;
- }
- void MainWindow::resizeEvent(QResizeEvent *event)
- {
- m_titleBar->resize(width() - titleBarIndent(), m_titleBar->height());
- }
- void MainWindow::switchTo(QWidget *widget, bool triggerByUser)
- {
- qDebug() << __FUNCTION__ << __LINE__;
- m_stackWidget->setCurrentWidget(widget, !triggerByUser);
- }
- void MainWindow::loginViewClicked()
- {
- qDebug() << __FUNCTION__ << __LINE__;
- switchTo(m_loginView);
- }
- void MainWindow::aboutViewClicked()
- {
- qDebug() << __FUNCTION__ << __LINE__;
- switchTo(m_aboutView);
- }
|