#include "HomeWidget.h" #include #include #include #include #include #include #include #include #include "MainWindow.h" #include "ui_HomeWidget.h" enum class TownType : uint8_t { TT_Matian }; HomeWidget::HomeWidget(MainWindow *parent) : PageBaseWidget(parent), ui(new Ui::HomeWidget) { ui->setupUi(this); connect(ui->btn_exit_system, &QPushButton::clicked, this, &HomeWidget::OnExitSystem); connect(ui->btn_matian, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed); InitIrreButton(ui->btn_matian, ":/res/matian-b.png", DetailedType::DT_Matian); connect(ui->btn_yangjiao, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed); InitIrreButton(ui->btn_yangjiao, ":/res/yangjiao-b.png", DetailedType::DT_Yangjiao); connect(ui->btn_hanwang, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed); InitIrreButton(ui->btn_hanwang, ":/res/hanwang-a.png", DetailedType::DT_Hanwang); connect(ui->btn_qinquan, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed); InitIrreButton(ui->btn_qinquan, ":/res/qinquan-a.png", DetailedType::DT_Qinquan); connect(ui->btn_guaier, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed); InitIrreButton(ui->btn_guaier, ":/res/guaier-a.png", DetailedType::DT_Guaier); connect(ui->btn_shixia, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed); InitIrreButton(ui->btn_shixia, ":/res/shixia-a.png", DetailedType::DT_Shixia); connect(ui->btn_liaoyang, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed); InitIrreButton(ui->btn_liaoyang, ":/res/liaoyang-a.png", DetailedType::DT_Liaoyang); connect(ui->btn_tongyu, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed); InitIrreButton(ui->btn_tongyu, ":/res/tongyu-a.png", DetailedType::DT_Tongyu); ui->btn_exit_system->hide(); //InitSequenceFrame(); } HomeWidget::~HomeWidget() { delete ui; } void HomeWidget::Use() { PageBaseWidget::Use(); if (nullptr != sequenceFrame_) { sequenceFrame_->hide(); } } void HomeWidget::OnExitSystem() { //QMessageBox::StandardButton reply; QMessageBox messaBox(QMessageBox::Question, "询问", "确定关闭系统?", QMessageBox::Yes | QMessageBox::No, this); // messaBox.setStyleSheet(QString(messageBoxQss)); messaBox.setButtonText(QMessageBox::Yes, "确定"); messaBox.setButtonText(QMessageBox::No, "取消"); //messaBox.setWindowFlags(Qt::FramelessWindowHint | Qt::WindowTitleHint); int reply = messaBox.exec();// question(this, "询问", "确定关闭系统?", QMessageBox::Yes | QMessageBox::No); //reply = QMessageBox::question(this, "info", tr(" are you sure to exit system? "), // QMessageBox::Yes | QMessageBox::No); if (reply == QMessageBox::Yes) { QApplication::quit(); } } void HomeWidget::OnEnterDetailed() { MainWindow::Get().PlayAudio(); MainWindow* mainWindow = GetParentWidget(); if (nullptr == mainWindow) { qDebug() << __FUNCTION__ << "widget is nullptr"; return; } QPushButton* pbt = reinterpret_cast(sender()); int index = pbt->property("index").toInt(); const QRect& rect = pbt->geometry(); const QPoint center = rect.center() ; if (nullptr != sequenceFrame_) { QSize size = sequenceFrame_->geometry().size() / 2; sequenceFrame_->move(center - QPoint(size.width(), size.height())); sequenceFrame_->show(); } QTimer::singleShot(600, [=] { mainWindow->ShowDetailedTown(static_cast(index)); } ); } void HomeWidget::InitIrreButton(QPushButton* pbt, const QString& url, DetailedType dt) { QPixmap pix; pix.load(url); pbt->setFixedSize(pix.size()); pbt->setMask(pix.mask()); pbt->setProperty("index", static_cast(dt)); } void HomeWidget::InitSequenceFrame() { const QString landmarkPath = QApplication::applicationDirPath() + "/sequence/circle"; QStringList pngFileList; QDir directory(landmarkPath); if (!directory.exists()) { qDebug() << "Directory does not exist: " << landmarkPath; return; } QFileInfoList entries = directory.entryInfoList(QStringList() << "*.png", QDir::Files | QDir::NoDotAndDotDot); for (const QFileInfo& entry : entries) { QString filePath = entry.absoluteFilePath(); pngFileList.append(filePath); } sequenceFrame_ = new SequenceFrame(pngFileList, this); sequenceFrame_->raise(); sequenceFrame_->setGeometry(0, 0, 460, 460); sequenceFrame_->hide(); //sequenceFrame_->move(752, 501); }