#include "DetailedBaseWidget.h" #include #include #include #include #include "IrregularButton.h" #include "TownImageWidget.h" #include "DetailedTown.h" #include "MainWindow.h" DetailedBaseWidget::DetailedBaseWidget(DetailedType detailedType, QWidget* parent /*= nullptr*/) : QWidget(parent) , m_detailedType(detailedType) { setAttribute(Qt::WA_StyledBackground, true); detailedTown_ = dynamic_cast(parent); } void DetailedBaseWidget::initButton(QPushButton* btn, bool left) { const QString text = btn->text(); IrregularButton* irregularBtn = dynamic_cast(btn); if (nullptr == irregularBtn) { qDebug() << __FUNCTION__ << "irregularBtn is nullptr"; return; } irregularBtn->SetDetailedType(m_detailedType); irregularBtn->SetBtnName(text.trimmed()); connect(btn, &QPushButton::clicked, this, &DetailedBaseWidget::OnEnterDetailed); btn->setText(""); QPixmap pix; if (left) { pix.load(":/res/bg-btn.png"); } else { pix.load(":/res/bg-btn-1.png"); } btn->setFixedSize(btn->size()); btn->setMask(pix.mask()); } void DetailedBaseWidget::OnEnterDetailed() { IrregularButton* irregularBtn = dynamic_cast(sender()); if (nullptr == irregularBtn) { qDebug() << __FUNCTION__ << "btn is nullptr"; return; } irregularBtn->OnEmitEnter(); if (nullptr != detailedTown_) { const QString& btnName = irregularBtn->GetBtnName(); MediaInfo* mediaInfo = MainWindow::Get().GetMediaInfo(static_cast(m_detailedType), btnName); detailedTown_->SetSequencePos(mediaInfo->landmark); detailedTown_->SetMediaInfo(mediaInfo); } QTimer::singleShot(200, [=]() { const QString& btnName = irregularBtn->GetBtnName(); emit irregularBtn->Leave(); MainWindow::Get().ShowContentWidget(static_cast(m_detailedType), btnName); }); }