#include "mainwindow.h" // #include // #include #include #include #include "ui_mainwindow.h" // #include "widgetframe/windowbar.h" // #include "widgetframe/windowbutton.h" #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) #include #else #include #endif MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); this->setWindowTitle("载荷视频播放软件"); /* auto windowAgent = new QWK::WidgetWindowAgent(this); windowAgent->setup(this); auto windowBar = new QWK::WindowBar(); auto iconButton = new QWK::WindowButton(); iconButton->setObjectName(QStringLiteral("icon-button")); iconButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); auto minButton = new QWK::WindowButton(); minButton->setObjectName(QStringLiteral("min-button")); minButton->setProperty("system-button", true); minButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); auto maxButton = new QWK::WindowButton(); maxButton->setCheckable(true); maxButton->setObjectName(QStringLiteral("max-button")); maxButton->setProperty("system-button", true); maxButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); auto closeButton = new QWK::WindowButton(); closeButton->setObjectName(QStringLiteral("close-button")); closeButton->setProperty("system-button", true); closeButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); windowBar->setIconButton(iconButton); windowBar->setMinButton(minButton); windowBar->setMaxButton(maxButton); windowBar->setCloseButton(closeButton); windowAgent->setTitleBar(windowBar); setMenuWidget(windowBar); // windowAgent->setHitTestVisible(windowBar->menuBar(), true); */ // apply the qss QFile qssfile(":/Qss/qss.qss"); if (qssfile.open(QFile::ReadOnly)) { // file.open(QFile::ReadOnly); QString style = QLatin1String(qssfile.readAll()); qApp->setStyleSheet(style); // qDebug()< list; // list.append("rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid"); // list.append("rtsp://182.92.130.23/nmyj/video"); // list.append("rtmp://182.92.130.23/nmyj/video"); // list.append("rtmp://ns8.indexforce.com/home/mystream"); // // ui->videoWidget->udpPlay("172.10.1.199", 13001); // ui->videoWidget->setVedioSaveFileDirPath("./video"); // ui->videoWidget->play(list.at(1)); // ui->videoWidget->pushStream("udp://172.10.1.199:8009"); QString urlFile = "networkSettingInfo.ini"; QFile file(urlFile); if (!file.exists()) { file.open(QIODevice::WriteOnly); file.close(); } g_networkSettingInfo = new QSettings("networkSettingInfo.ini", QSettings::IniFormat); initSignalConnection(); initNotifyManager(); initNotifyMessageConnection(); initCommunitions(); } MainWindow::~MainWindow() { delete ui; } void MainWindow::initSignalConnection() { connect(ui->commandWidget, &CommandWidget::startConnectionSignal, ui->videoWidget, &VideoWidget::udpPlay, Qt::UniqueConnection); connect(ui->commandWidget, &CommandWidget::stopConnectionSignal, ui->videoWidget, &VideoWidget::stopPlay, Qt::UniqueConnection); } void MainWindow::initNotifyMessageConnection() { connect(ui->videoWidget, &VideoWidget::sendErrorMessageSignal, this, &MainWindow::showMessageSlots); connect(ui->commandWidget, &CommandWidget::sendErrorMessage, this, &MainWindow::showMessageSlots); } void MainWindow::initNotifyManager() { m_notifyManager = new NotifyManager(this, this); m_notifyManager->setMaxCount(5); m_notifyManager->setDisplayTime(2000); m_notifyManager->setNotifyWndSize(400, 60); } void MainWindow::initCommunitions() { g_CommandudpSocket = new QUdpSocket(this); // 将套接字绑定到指定端口 if (g_CommandudpSocket->bind(QHostAddress::Any, 1200)) { qDebug() << "UDP 套接字已绑定到端口 1200"; } else { qDebug() << "绑定 UDP 套接字失败"; } } void MainWindow::showMessageSlots(QString message, int type) { if (m_notifyManager) { m_notifyManager->notify(message, "", type, 3000); } } /* void MainWindow::installWindowAgent() { // 1. Setup window agent windowAgent = new QWK::WidgetWindowAgent(this); windowAgent->setup(this); // 2. Construct your title bar auto menuBar = [this]() { auto menuBar = new QMenuBar(this); // Virtual menu auto file = new QMenu(tr("File(&F)"), menuBar); file->addAction(new QAction(tr("New(&N)"), menuBar)); file->addAction(new QAction(tr("Open(&O)"), menuBar)); file->addSeparator(); auto edit = new QMenu(tr("Edit(&E)"), menuBar); edit->addAction(new QAction(tr("Undo(&U)"), menuBar)); edit->addAction(new QAction(tr("Redo(&R)"), menuBar)); // Theme action auto darkAction = new QAction(tr("Enable dark theme"), menuBar); darkAction->setCheckable(true); // connect(darkAction, &QAction::triggered, this, [this](bool checked) { // loadStyleSheet(checked ? Dark : Light); // // }); // connect(this, &MainWindow::themeChanged, darkAction, // [this, darkAction]() { // darkAction->setChecked(currentTheme == Dark); // // }); auto noneAction = new QAction(tr("None"), menuBar); noneAction->setData(QStringLiteral("none")); noneAction->setCheckable(true); noneAction->setChecked(true); auto dwmBlurAction = new QAction(tr("Enable DWM blur"), menuBar); dwmBlurAction->setData(QStringLiteral("dwm-blur")); dwmBlurAction->setCheckable(true); auto acrylicAction = new QAction(tr("Enable acrylic material"), menuBar); acrylicAction->setData(QStringLiteral("acrylic-material")); acrylicAction->setCheckable(true); auto micaAction = new QAction(tr("Enable mica"), menuBar); micaAction->setData(QStringLiteral("mica")); micaAction->setCheckable(true); auto micaAltAction = new QAction(tr("Enable mica alt"), menuBar); micaAltAction->setData(QStringLiteral("mica-alt")); micaAltAction->setCheckable(true); auto winStyleGroup = new QActionGroup(menuBar); winStyleGroup->addAction(noneAction); winStyleGroup->addAction(dwmBlurAction); winStyleGroup->addAction(acrylicAction); winStyleGroup->addAction(micaAction); winStyleGroup->addAction(micaAltAction); // connect(winStyleGroup, &QActionGroup::triggered, this, // [this, winStyleGroup](QAction *action) { // // Unset all custom style attributes first, otherwise the // // style will not display correctly // for (const QAction *_act : winStyleGroup->actions()) { // const QString data = _act->data().toString(); // if (data.isEmpty() || data == QStringLiteral("none")) // { // continue; // } // windowAgent->setWindowAttribute(data, false); // } // const QString data = action->data().toString(); // if (data == QStringLiteral("none")) { // setProperty("custom-style", false); // } else if (!data.isEmpty()) { // windowAgent->setWindowAttribute(data, true); // setProperty("custom-style", true); // } // style()->polish(this); // }); // Real menu auto settings = new QMenu(tr("Settings(&S)"), menuBar); settings->addAction(darkAction); settings->addSeparator(); settings->addAction(noneAction); settings->addAction(dwmBlurAction); settings->addAction(acrylicAction); settings->addAction(micaAction); settings->addAction(micaAltAction); menuBar->addMenu(file); menuBar->addMenu(edit); menuBar->addMenu(settings); return menuBar; }(); menuBar->setObjectName(QStringLiteral("win-menu-bar")); auto titleLabel = new QLabel(); titleLabel->setAlignment(Qt::AlignCenter); titleLabel->setObjectName(QStringLiteral("win-title-label")); #ifndef Q_OS_MAC auto iconButton = new QWK::WindowButton(); iconButton->setObjectName(QStringLiteral("icon-button")); iconButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); auto pinButton = new QWK::WindowButton(); pinButton->setCheckable(true); pinButton->setObjectName(QStringLiteral("pin-button")); pinButton->setProperty("system-button", true); pinButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); auto minButton = new QWK::WindowButton(); minButton->setObjectName(QStringLiteral("min-button")); minButton->setProperty("system-button", true); minButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); auto maxButton = new QWK::WindowButton(); maxButton->setCheckable(true); maxButton->setObjectName(QStringLiteral("max-button")); maxButton->setProperty("system-button", true); maxButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); auto closeButton = new QWK::WindowButton(); closeButton->setObjectName(QStringLiteral("close-button")); closeButton->setProperty("system-button", true); closeButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); #endif auto windowBar = new QWK::WindowBar(); #ifndef Q_OS_MAC windowBar->setIconButton(iconButton); windowBar->setPinButton(pinButton); windowBar->setMinButton(minButton); windowBar->setMaxButton(maxButton); windowBar->setCloseButton(closeButton); #endif windowBar->setMenuBar(menuBar); windowBar->setTitleLabel(titleLabel); windowBar->setHostWidget(this); windowAgent->setTitleBar(windowBar); #ifndef Q_OS_MAC windowAgent->setHitTestVisible(pinButton, true); windowAgent->setSystemButton(QWK::WindowAgentBase::WindowIcon, iconButton); windowAgent->setSystemButton(QWK::WindowAgentBase::Minimize, minButton); windowAgent->setSystemButton(QWK::WindowAgentBase::Maximize, maxButton); windowAgent->setSystemButton(QWK::WindowAgentBase::Close, closeButton); #endif windowAgent->setHitTestVisible(menuBar, true); #ifdef Q_OS_MAC windowAgent->setSystemButtonAreaCallback([](const QSize &size) { static constexpr const int width = 75; return QRect(QPoint(size.width() - width, 0), QSize(width, size.height())); // }); #endif setMenuWidget(windowBar); #ifndef Q_OS_MAC connect(windowBar, &QWK::WindowBar::pinRequested, this, [this, pinButton](bool pin) { if (isHidden() || isMinimized() || isMaximized() || isFullScreen()) { return; } setWindowFlag(Qt::WindowStaysOnTopHint, pin); show(); pinButton->setChecked(pin); }); connect(windowBar, &QWK::WindowBar::minimizeRequested, this, &QWidget::showMinimized); connect(windowBar, &QWK::WindowBar::maximizeRequested, this, [this, maxButton](bool max) { if (max) { showMaximized(); } else { showNormal(); } // It's a Qt issue that if a QAbstractButton::clicked triggers a // window's maximization, the button remains to be hovered until // the mouse move. As a result, we need to manually send leave // events to the button. // emulateLeaveEvent(maxButton); }); connect(windowBar, &QWK::WindowBar::closeRequested, this, &QWidget::close); #endif } */