下一步完善旋转等画面功能

This commit is contained in:
2025-09-25 23:53:23 +08:00
parent 1d9da56656
commit ee228485dc
16 changed files with 940 additions and 722 deletions

View File

@@ -6,13 +6,14 @@ find_package(Qt6 6.5 REQUIRED COMPONENTS Core Widgets)
include_directories( include_directories(
${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/log ${CMAKE_CURRENT_SOURCE_DIR}/log
${CMAKE_CURRENT_SOURCE_DIR}/third_party/FFmpeg/include "~/ffmpeg4.2_build/include"
# ${CMAKE_CURRENT_SOURCE_DIR}/third_party/FFmpeg/include
) )
file(GLOB EASYLOG_SOURCES "log/*.cc" "log/*.h") file(GLOB EASYLOG_SOURCES "log/*.cc" "log/*.h")
file(GLOB UI_SOURCES "*.ui") file(GLOB UI_SOURCES "*.ui")
file(GLOB SOURCES "*.cpp" "*.h") file(GLOB SOURCES "*.cpp" "*.h")
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/third_party/FFmpeg/lib) link_directories("~/ffmpeg4.2_build/lib")
find_package(SDL2 REQUIRED) find_package(SDL2 REQUIRED)

View File

@@ -28,7 +28,7 @@ void CustomSlider::mouseReleaseEvent(QMouseEvent *ev)
bIsPressed = false; bIsPressed = false;
QSlider::mouseReleaseEvent(ev); QSlider::mouseReleaseEvent(ev);
//emit SigCustomSliderValueChanged(); emit SigCustomSliderValueChanged(this->value());
} }
void CustomSlider::mouseMoveEvent(QMouseEvent *ev) void CustomSlider::mouseMoveEvent(QMouseEvent *ev)

View File

@@ -2,6 +2,7 @@
#include "ui_displaywind.h" #include "ui_displaywind.h"
#include <QDebug> #include <QDebug>
#include <QPainter> #include <QPainter>
#include <globalhelper.h>
DisplayWind::DisplayWind(QWidget *parent) : DisplayWind::DisplayWind(QWidget *parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::DisplayWind), ui(new Ui::DisplayWind),
@@ -9,6 +10,7 @@ DisplayWind::DisplayWind(QWidget *parent) :
// stParentWidget_(parent) // stParentWidget_(parent)
{ {
ui->setupUi(this); ui->setupUi(this);
// this->setStyleSheet(GlobalHelper::GetQssStr(":/res/qss/show.css"));
win_width_ = width(); win_width_ = width();
win_height_ = height(); win_height_ = height();
memset(&dst_video_frame_, sizeof(VideoFrame), 0); memset(&dst_video_frame_, sizeof(VideoFrame), 0);
@@ -128,8 +130,19 @@ void DisplayWind::enterFullScreen()
} }
setParent(nullptr); setParent(nullptr);
} }
setWindowFlags(Qt::Window); setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
showFullScreen();
QScreen *currentScreen = screen() ? screen() : QGuiApplication::primaryScreen();
if (currentScreen) {
QRect availableGeometry = currentScreen->availableGeometry();
this->setGeometry(availableGeometry);
this->setStyleSheet("background-color: black;");
show();
}
else {
show();
}
// showFullScreen();
setFocus(); setFocus();
@@ -144,7 +157,7 @@ void DisplayWind::exitFullScreen()
bIsFull_ = false; bIsFull_ = false;
setWindowFlags(Qt::Widget); setWindowFlags(Qt::Widget);
hide(); // hide();
if (stParentWidget_) { if (stParentWidget_) {
setParent(stParentWidget_); setParent(stParentWidget_);
@@ -158,12 +171,13 @@ void DisplayWind::exitFullScreen()
setGeometry(stOriginalGeometry_); setGeometry(stOriginalGeometry_);
} }
} }
resize(nWinWidthBack_, nWinHeightBack_);
show(); // show();
// resize(nWinWidthBack_, nWinHeightBack_);
setFocus(); setFocus();
stParentLayout_ = nullptr; // stParentLayout_ = nullptr;
nParentLayoutIndex_ = 0; // nParentLayoutIndex_ = 0;
stOriginalGeometry_ = QRect(); // stOriginalGeometry_ = QRect();
emit signalFullScreenChanged(); emit signalFullScreenChanged();
} }

View File

@@ -43,6 +43,7 @@ HomeWindow::HomeWindow(QWidget *parent) :
bIsFull(false) bIsFull(false)
{ {
ui->setupUi(this); ui->setupUi(this);
setWindowIcon(QIcon(":/logo/res/logo.png"));
ui->playList->Init(); ui->playList->Init();
QString str = QString("%1:%2:%3").arg(0, 2, 10, QLatin1Char('0')).arg(0, 2, 10, QLatin1Char('0')).arg(0, 2, 10, QLatin1Char('0')); QString str = QString("%1:%2:%3").arg(0, 2, 10, QLatin1Char('0')).arg(0, 2, 10, QLatin1Char('0')).arg(0, 2, 10, QLatin1Char('0'));
ui->curPosition->setText(str); ui->curPosition->setText(str);
@@ -94,6 +95,8 @@ int HomeWindow::InitSignalsAndSlots()
connect(ui->openUrlAction, &QAction::triggered, this, &HomeWindow::on_openNetworkUrl); connect(ui->openUrlAction, &QAction::triggered, this, &HomeWindow::on_openNetworkUrl);
connect(this, &HomeWindow::sig_updatePlayOrPause, this, &HomeWindow::on_updatePlayOrPause); connect(this, &HomeWindow::sig_updatePlayOrPause, this, &HomeWindow::on_updatePlayOrPause);
connect(this, &HomeWindow::sig_troggleFull, ui->display, &DisplayWind::onToggleFullScreen); connect(this, &HomeWindow::sig_troggleFull, ui->display, &DisplayWind::onToggleFullScreen);
connect(&setting_wid_, &Setting::sig_bufDurationBox_currentIndexChanged, this, &HomeWindow::on_bufDurationBox_currentIndexChanged);
connect(&setting_wid_, &Setting::sig_jitterBufBox_currentIndexChanged, this, &HomeWindow::on_jitterBufBox_currentIndexChanged);
return 0; return 0;
} }
@@ -188,49 +191,52 @@ void HomeWindow::resizeEvent(QResizeEvent *event)
void HomeWindow::resizeUI() void HomeWindow::resizeUI()
{ {
int width = this->width(); int width = ui->playwidget->width();
int height = this->height(); int height = ui->playwidget->height();
LOG(INFO) << "width: " << width; QRect rect = ui->playwidget->geometry();
// 获取当前ctrlwidget的位置 qDebug() << rect;
QRect rect = ui->ctrlBar->geometry(); ui->display->setGeometry(rect);
rect.setY(height - ui->menuBar->height() - rect.height()); // LOG(INFO) << "width: " << width;
// LOG(INFO) << "rect: " << rect; // // 获取当前ctrlwidget的位置
rect.setWidth(width); // QRect rect = ui->ctrlBar->geometry();
ui->ctrlBar->setGeometry(rect); // rect.setY(height - ui->menuBar->height() - rect.height());
// 设置setting和listbutton的位置 // // LOG(INFO) << "rect: " << rect;
rect = ui->settingBtn->geometry(); // rect.setWidth(width);
// 获取 ctrlBar的大小 计算list的 x位置 // ui->ctrlBar->setGeometry(rect);
int x1 = ui->ctrlBar->width() - rect.width() - rect.width() / 8 * 2; // // 设置setting和listbutton的位置
ui->listBtn->setGeometry(x1, rect.y(), rect.width(), rect.height()); // rect = ui->settingBtn->geometry();
// LOG(INFO) << "listBtn: " << ui->listBtn->geometry(); // // 获取 ctrlBar的大小 计算list的 x位置
// 设置setting button的位置在listbutton左侧 // int x1 = ui->ctrlBar->width() - rect.width() - rect.width() / 8 * 2;
rect = ui->listBtn->geometry(); // ui->listBtn->setGeometry(x1, rect.y(), rect.width(), rect.height());
x1 = rect.x() - rect.width() - rect.width() / 8 ; // // LOG(INFO) << "listBtn: " << ui->listBtn->geometry();
ui->settingBtn->setGeometry(x1, rect.y(), rect.width(), rect.height()); // // 设置setting button的位置在listbutton左侧
// LOG(INFO) << "settingBtn: " << ui->settingBtn->geometry(); // rect = ui->listBtn->geometry();
// 设置 显示画面 // x1 = rect.x() - rect.width() - rect.width() / 8 ;
if(is_show_file_list_) { // ui->settingBtn->setGeometry(x1, rect.y(), rect.width(), rect.height());
width = this->width() - ui->playList->width(); // // LOG(INFO) << "settingBtn: " << ui->settingBtn->geometry();
} else { // // 设置 显示画面
width = this->width(); // if(is_show_file_list_) {
} // width = this->width() - ui->playList->width();
height = this->height() - ui->ctrlBar->height() - ui->menuBar->height(); // } else {
// int y1 = ui->menuBar->height(); // width = this->width();
int y1 = 0; // }
ui->display->setGeometry(0, y1, width, height); // height = this->height() - ui->ctrlBar->height() - ui->menuBar->height();
// 设置文件列表 list // // int y1 = ui->menuBar->height();
if(is_show_file_list_) { // int y1 = 0;
ui->playList->setGeometry(ui->display->width(), y1, ui->playList->width(), height); // ui->display->setGeometry(0, y1, width, height);
} // // 设置文件列表 list
// 设置播放进度条的长度,设置成和显示控件宽度一致 // if(is_show_file_list_) {
rect = ui->playSlider->geometry(); // ui->playList->setGeometry(ui->display->width(), y1, ui->playList->width(), height);
width = ui->display->width() - 5 - 5; // }
rect.setWidth(width); // // 设置播放进度条的长度,设置成和显示控件宽度一致
ui->playSlider->setGeometry(5, rect.y(), rect.width(), rect.height()); // rect = ui->playSlider->geometry();
// 设置音量条位置 // width = ui->display->width() - 5 - 5;
x1 = this->width() - 5 - ui->volumeSlider->width(); // rect.setWidth(width);
rect = ui->volumeSlider->geometry(); // ui->playSlider->setGeometry(5, rect.y(), rect.width(), rect.height());
ui->volumeSlider->setGeometry(x1, rect.y(), rect.width(), rect.height()); // // 设置音量条位置
// x1 = this->width() - 5 - ui->volumeSlider->width();
// rect = ui->volumeSlider->geometry();
// ui->volumeSlider->setGeometry(x1, rect.y(), rect.width(), rect.height());
} }
void HomeWindow::closeEvent(QCloseEvent *event) void HomeWindow::closeEvent(QCloseEvent *event)
@@ -448,9 +454,10 @@ void HomeWindow::on_playOrPauseBtn_clicked()
void HomeWindow::on_updatePlayOrPause(int state) void HomeWindow::on_updatePlayOrPause(int state)
{ {
if(state == MP_STATE_STARTED) { if(state == MP_STATE_STARTED) {
ui->playOrPauseBtn->setText("暂停"); // ui->playOrPauseBtn->setText("暂停");
GlobalHelper::SetToolbuttonIcon(ui->playOrPauseBtn, ":/icon/res/icon/pause.png");
} else { } else {
ui->playOrPauseBtn->setText("播放"); GlobalHelper::SetToolbuttonIcon(ui->playOrPauseBtn, ":/icon/res/icon/play.png");
} }
LOG(INFO) << "play state: " << state; LOG(INFO) << "play state: " << state;
} }
@@ -566,7 +573,7 @@ bool HomeWindow::stop()
real_time_ = 0; real_time_ = 0;
is_accelerate_speed_ = false; is_accelerate_speed_ = false;
ui->display->StopPlay(); // 停止渲染,后续刷黑屏 ui->display->StopPlay(); // 停止渲染,后续刷黑屏
ui->playOrPauseBtn->setText("播放"); GlobalHelper::SetToolbuttonIcon(ui->playOrPauseBtn, ":/icon/res/icon/play.png");
return 0; return 0;
} else { } else {
return -1; return -1;
@@ -747,6 +754,14 @@ void HomeWindow::on_backFastBtn_clicked()
void HomeWindow::on_fullBtn_clicked() void HomeWindow::on_fullBtn_clicked()
{ {
emit sig_troggleFull(true); if (mp_ && ((mp_->ijkmp_get_state() == MP_STATE_STARTED) || (mp_->ijkmp_get_state() == MP_STATE_PAUSED))) {
emit sig_troggleFull(true);
}
}
void HomeWindow::on_settingBtn_clicked()
{
setting_wid_.show();
} }

View File

@@ -5,6 +5,7 @@
#include <QTimer> #include <QTimer>
#include "toast.h" #include "toast.h"
#include "ijkmediaplayer.h" #include "ijkmediaplayer.h"
#include "setting.h"
namespace Ui namespace Ui
{ {
class HomeWindow; class HomeWindow;
@@ -36,6 +37,9 @@ signals:
void sig_stopped(); // 被动停止 void sig_stopped(); // 被动停止
void sig_troggleFull(bool); void sig_troggleFull(bool);
public slots:
void on_bufDurationBox_currentIndexChanged(int index);
void on_jitterBufBox_currentIndexChanged(int index);
private slots: private slots:
void on_UpdateAudioCacheDuration(int64_t duration); void on_UpdateAudioCacheDuration(int64_t duration);
void on_UpdateVideoCacheDuration(int64_t duration); void on_UpdateVideoCacheDuration(int64_t duration);
@@ -53,8 +57,8 @@ private slots:
// 进度条响应 // 进度条响应
// 拖动触发 // 拖动触发
// void on_playSliderValueChanged(); // void on_playSliderValueChanged();
// void on_volumeSliderValueChanged(); // void on_volumeSliderValueChanged();
void on_updateCurrentPosition(long position); void on_updateCurrentPosition(long position);
void onTimeOut(); void onTimeOut();
@@ -65,9 +69,7 @@ private slots:
void on_screenBtn_clicked(); void on_screenBtn_clicked();
void on_showTips(Toast::Level leve, QString tips); void on_showTips(Toast::Level leve, QString tips);
void on_bufDurationBox_currentIndexChanged(int index);
void on_jitterBufBox_currentIndexChanged(int index);
void on_prevBtn_clicked(); void on_prevBtn_clicked();
@@ -79,6 +81,8 @@ private slots:
void on_fullBtn_clicked(); void on_fullBtn_clicked();
void on_settingBtn_clicked();
private: private:
void startTimer(); void startTimer();
@@ -140,6 +144,9 @@ private:
int64_t audio_bitrate_duration = 0; int64_t audio_bitrate_duration = 0;
int64_t video_bitrate_duration = 0; int64_t video_bitrate_duration = 0;
// setting dialog
Setting setting_wid_;
bool bIsFull; bool bIsFull;
}; };

View File

@@ -6,7 +6,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1115</width> <width>1236</width>
<height>757</height> <height>757</height>
</rect> </rect>
</property> </property>
@@ -26,411 +26,465 @@
<string>GDMP</string> <string>GDMP</string>
</property> </property>
<widget class="QWidget" name="centralWidget"> <widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_5">
<item> <item>
<widget class="QWidget" name="playwidget" native="true"> <layout class="QVBoxLayout" name="verticalLayout_2">
<widget class="DisplayWind" name="display" native="true"> <property name="spacing">
<property name="geometry"> <number>0</number>
<rect> </property>
<x>160</x> <property name="bottomMargin">
<y>160</y> <number>6</number>
<width>400</width> </property>
<height>240</height> <item>
</rect> <widget class="QWidget" name="playwidget" native="true">
</property> <property name="sizePolicy">
<property name="minimumSize"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<size> <horstretch>0</horstretch>
<width>400</width> <verstretch>0</verstretch>
<height>240</height> </sizepolicy>
</size> </property>
</property> <property name="minimumSize">
<property name="styleSheet"> <size>
<string notr="true"/> <width>0</width>
</property> <height>0</height>
</widget> </size>
<widget class="Playlist" name="playList" native="true"> </property>
<property name="geometry"> <layout class="QVBoxLayout" name="verticalLayout_3">
<rect> <property name="spacing">
<x>720</x> <number>0</number>
<y>160</y> </property>
<width>240</width> <property name="leftMargin">
<height>240</height> <number>0</number>
</rect> </property>
</property> <property name="topMargin">
<property name="minimumSize"> <number>0</number>
<size> </property>
<width>240</width> <property name="rightMargin">
<height>0</height> <number>0</number>
</size> </property>
</property> <property name="bottomMargin">
<property name="maximumSize"> <number>0</number>
<size> </property>
<width>240</width> <item>
<height>16777215</height> <widget class="DisplayWind" name="display" native="true">
</size> <property name="minimumSize">
</property> <size>
<property name="styleSheet"> <width>400</width>
<string notr="true"/> <height>240</height>
</property> </size>
</widget> </property>
</widget> <property name="styleSheet">
<string notr="true"/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="ctrlBar" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>800</width>
<height>128</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>95</height>
</size>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="CustomSlider" name="playSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>300</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>20</height>
</size>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="maximum">
<number>65536</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="curPosition">
<property name="maximumSize">
<size>
<width>65</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>20:10:00</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_7">
<property name="maximumSize">
<size>
<width>5</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>/</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="totalDuration">
<property name="maximumSize">
<size>
<width>65</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>24:00:00</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QWidget" name="widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QToolButton" name="playOrPauseBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="stopBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="toolTip">
<string/>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="backFastBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="forwardFastBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="prevBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="nextBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="speedBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="CustomSlider" name="volumeSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>20</height>
</size>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QWidget" name="ctrlrightWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QToolButton" name="screenBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="settingBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="listBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="fullBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<widget class="QWidget" name="ctrlBar" native="true"> <widget class="Playlist" name="playList" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>800</width> <width>240</width>
<height>128</height> <height>0</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>16777215</width> <width>240</width>
<height>95</height> <height>16777215</height>
</size> </size>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <property name="styleSheet">
<item> <string notr="true"/>
<layout class="QHBoxLayout" name="horizontalLayout_3"> </property>
<item>
<widget class="CustomSlider" name="playSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>300</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>20</height>
</size>
</property>
<property name="maximum">
<number>65536</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="curPosition">
<property name="maximumSize">
<size>
<width>65</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>20:10:00</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_7">
<property name="maximumSize">
<size>
<width>5</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>/</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="totalDuration">
<property name="maximumSize">
<size>
<width>65</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>24:00:00</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QToolButton" name="playOrPauseBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="stopBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="backFastBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="forwardFastBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="prevBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="nextBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="speedBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="CustomSlider" name="volumeSlider">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>20</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QWidget" name="ctrlrightWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QToolButton" name="screenBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="settingBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="listBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="fullBtn">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
</layout>
</widget> </widget>
</item> </item>
</layout> </layout>
@@ -440,8 +494,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1115</width> <width>1236</width>
<height>22</height> <height>27</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menu_2"> <widget class="QMenu" name="menu_2">

BIN
logo.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

BIN
logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -6,6 +6,7 @@ QMainWindow {
border-style: none; border-style: none;
} }
.QToolButton { .QToolButton {
background-color: transparent; background-color: transparent;
border-style: none; border-style: none;

View File

@@ -1,27 +1,77 @@
/*#COLOR#;MAIN_COLOR=#45b0c4;BTN_HOVER_COLOR=#6bc3ce;BTN_PRESSED_COLOR=#30889b;ITEM_HOVER_COLOR=#f1fcfc;ITEM_SELECTED_COLOR=#e9f4f4*/
/**********窗口样式*************/
QMainWindow { QMainWindow {
/* background: #FFFFFF; */
border-style: none; border-style: none;
color: white;
background-color: black;
} }
.QToolButton { QWidget {
background-color: transparent; border-style: none;
/* border-style: none; */ color: white;
border: 1px solid #FFFFFF; background-color: black;
/* icon-size: 48px; */
padding: 8px;
/* margin: 2px; */
/* transition: all 0.3s ease; */
} }
.QToolButton::hover {
QWidget#ctrlBar > QLabel {
color: white;
}
QPushButton {
color: white;
}
QSlider::groove:horizontal, QSlider::add-page:horizontal {
background-color: #F3F4F4;
height: 8px;
border-radius: 3px;
}
QSlider::sub-page:horizontal {
height: 8px;
border-radius: 3px;
background-color: #F56C3C;
}
QSlider::handle:horizontal {
width: 13px;
margin-top: -3px;
margin-bottom: -3px;
border-radius: 6px;;
background-color: #F56C3C;
}
QSlider::handle:horizontal:hover {
background-color: #ef794e;
}
QListView {
border: none;
selection-background-color: #F56C3C;
outline: 0px;
}
QListView::item {
padding: 5px;
margin: 0px;
size: 16px;
}
QListView::item:selected {
color: white;
background-color: #F56C3C;
}
QListView::item:hover {
color: white;
background-color: #ef794e;
}
QToolButton {
background-color: transparent; background-color: transparent;
border-style: none; border-style: none;
/* icon-size: 60px; */ padding: 10px;
padding: 3px; }
QToolButton:hover {
background-color: transparent;
border-style: none;
padding: 0px;
} }
/*QGroupBox#typeGroupBox{ /*QGroupBox#typeGroupBox{
border:1px solid #45b0c4; border:1px solid #45b0c4;

View File

@@ -3,4 +3,4 @@ QWidget{
color:white; color:white;
border: 1px solid black; border: 1px solid black;
border-bottom: none; border-bottom: none;
} }

View File

@@ -1,6 +1,6 @@
<RCC> <RCC>
<qresource prefix="/logo"> <qresource prefix="/logo">
<file>logo.ico</file> <file>res/logo.png</file>
</qresource> </qresource>
<qresource prefix="/"> <qresource prefix="/">
<file>res/qss/homewindow.qss</file> <file>res/qss/homewindow.qss</file>
@@ -16,6 +16,7 @@
<file>res/radiobutton_checked.png</file> <file>res/radiobutton_checked.png</file>
<file>res/radiobutton_checked_disable.png</file> <file>res/radiobutton_checked_disable.png</file>
<file>res/radiobutton_unchecked.png</file> <file>res/radiobutton_unchecked.png</file>
<file>res/qss/show.css</file>
</qresource> </qresource>
<qresource prefix="/icon"> <qresource prefix="/icon">
<file>res/icon/fast-backward.png</file> <file>res/icon/fast-backward.png</file>

View File

@@ -16,3 +16,27 @@ Setting::~Setting()
{ {
delete ui; delete ui;
} }
void Setting::on_bufDurationBox_currentIndexChanged(int index)
{
emit sig_bufDurationBox_currentIndexChanged(index);
}
void Setting::on_jitterBufBox_currentIndexChanged(int index)
{
emit sig_jitterBufBox_currentIndexChanged(index);
}
void Setting::on_audioBufEdit_editingFinished()
{
emit sig_audioBufEdit_textChangded(ui->audioBufEdit->text());
}
void Setting::on_videoBufEdit_editingFinished()
{
emit sig_videoBufEdit_textChangded(ui->videoBufEdit->text());
}

View File

@@ -15,6 +15,21 @@ public:
explicit Setting(QWidget *parent = nullptr); explicit Setting(QWidget *parent = nullptr);
~Setting(); ~Setting();
signals:
void sig_bufDurationBox_currentIndexChanged(int);
void sig_jitterBufBox_currentIndexChanged(int);
void sig_audioBufEdit_textChangded(QString);
void sig_videoBufEdit_textChangded(QString);
private slots:
void on_bufDurationBox_currentIndexChanged(int index);
void on_jitterBufBox_currentIndexChanged(int index);
void on_audioBufEdit_editingFinished();
void on_videoBufEdit_editingFinished();
private: private:
Ui::Setting *ui; Ui::Setting *ui;
}; };

View File

@@ -13,255 +13,291 @@
<property name="windowTitle"> <property name="windowTitle">
<string>Form</string> <string>Form</string>
</property> </property>
<widget class="QWidget" name="layoutWidget"> <widget class="QLabel" name="label_2">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>80</x> <x>180</x>
<y>90</y> <y>200</y>
<width>274</width> <width>45</width>
<height>79</height> <height>22</height>
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <property name="sizePolicy">
<item row="0" column="1"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<widget class="QLineEdit" name="audioBufEdit"> <horstretch>0</horstretch>
<property name="minimumSize"> <verstretch>0</verstretch>
<size> </sizepolicy>
<width>60</width> </property>
<height>0</height> <property name="minimumSize">
</size> <size>
</property> <width>40</width>
<property name="maximumSize"> <height>0</height>
<size> </size>
<width>70</width> </property>
<height>30</height> <property name="maximumSize">
</size> <size>
</property> <width>60</width>
<property name="text"> <height>16777215</height>
<string>音频缓存</string> </size>
</property> </property>
</widget> <property name="text">
</item> <string>抖动值</string>
<item row="1" column="0"> </property>
<widget class="QLabel" name="label_4"> </widget>
<property name="sizePolicy"> <widget class="QComboBox" name="bufDurationBox">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <property name="geometry">
<horstretch>0</horstretch> <rect>
<verstretch>0</verstretch> <x>250</x>
</sizepolicy> <y>160</y>
</property> <width>80</width>
<property name="minimumSize"> <height>30</height>
<size> </rect>
<width>50</width> </property>
<height>0</height> <property name="sizePolicy">
</size> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
</property> <horstretch>0</horstretch>
<property name="maximumSize"> <verstretch>0</verstretch>
<size> </sizepolicy>
<width>60</width> </property>
<height>16777215</height> <property name="maximumSize">
</size> <size>
</property> <width>80</width>
<property name="text"> <height>30</height>
<string>视频缓存</string> </size>
</property> </property>
</widget> <item>
</item> <property name="text">
<item row="1" column="3"> <string>30ms</string>
<widget class="QComboBox" name="jitterBufBox"> </property>
<property name="sizePolicy"> </item>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <item>
<horstretch>0</horstretch> <property name="text">
<verstretch>0</verstretch> <string>100ms</string>
</sizepolicy> </property>
</property> </item>
<property name="maximumSize"> <item>
<size> <property name="text">
<width>80</width> <string>200ms</string>
<height>30</height> </property>
</size> </item>
</property> <item>
<item> <property name="text">
<property name="text"> <string>400ms</string>
<string>30ms</string> </property>
</property> </item>
</item> <item>
<item> <property name="text">
<property name="text"> <string>600ms</string>
<string>100ms</string> </property>
</property> </item>
</item> <item>
<item> <property name="text">
<property name="text"> <string>800ms</string>
<string>200ms</string> </property>
</property> </item>
</item> <item>
<item> <property name="text">
<property name="text"> <string>1000ms</string>
<string>400ms</string> </property>
</property> </item>
</item> <item>
<item> <property name="text">
<property name="text"> <string>2000ms</string>
<string>600ms</string> </property>
</property> </item>
</item> <item>
<item> <property name="text">
<property name="text"> <string>4000ms</string>
<string>800ms</string> </property>
</property> </item>
</item> </widget>
<item> <widget class="QLineEdit" name="audioBufEdit">
<property name="text"> <property name="geometry">
<string>1000ms</string> <rect>
</property> <x>250</x>
</item> <y>80</y>
</widget> <width>64</width>
</item> <height>30</height>
<item row="1" column="1"> </rect>
<widget class="QLineEdit" name="videoBufEdit"> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>60</width> <width>60</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>70</width> <width>70</width>
<height>30</height> <height>30</height>
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>频缓存</string> <string>频缓存</string>
</property> </property>
</widget> </widget>
</item> <widget class="QLabel" name="label_4">
<item row="0" column="3"> <property name="geometry">
<widget class="QComboBox" name="bufDurationBox"> <rect>
<property name="sizePolicy"> <x>180</x>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <y>120</y>
<horstretch>0</horstretch> <width>60</width>
<verstretch>0</verstretch> <height>30</height>
</sizepolicy> </rect>
</property> </property>
<property name="maximumSize"> <property name="sizePolicy">
<size> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<width>80</width> <horstretch>0</horstretch>
<height>30</height> <verstretch>0</verstretch>
</size> </sizepolicy>
</property> </property>
<item> <property name="minimumSize">
<property name="text"> <size>
<string>30ms</string> <width>50</width>
</property> <height>0</height>
</item> </size>
<item> </property>
<property name="text"> <property name="maximumSize">
<string>100ms</string> <size>
</property> <width>60</width>
</item> <height>16777215</height>
<item> </size>
<property name="text"> </property>
<string>200ms</string> <property name="text">
</property> <string>视频缓存</string>
</item> </property>
<item> </widget>
<property name="text"> <widget class="QLabel" name="label_3">
<string>400ms</string> <property name="geometry">
</property> <rect>
</item> <x>180</x>
<item> <y>160</y>
<property name="text"> <width>60</width>
<string>600ms</string> <height>30</height>
</property> </rect>
</item> </property>
<item> <property name="minimumSize">
<property name="text"> <size>
<string>800ms</string> <width>40</width>
</property> <height>0</height>
</item> </size>
<item> </property>
<property name="text"> <property name="maximumSize">
<string>1000ms</string> <size>
</property> <width>60</width>
</item> <height>16777215</height>
<item> </size>
<property name="text"> </property>
<string>2000ms</string> <property name="text">
</property> <string>缓存阈值</string>
</item> </property>
<item> </widget>
<property name="text"> <widget class="QComboBox" name="jitterBufBox">
<string>4000ms</string> <property name="geometry">
</property> <rect>
</item> <x>250</x>
</widget> <y>200</y>
</item> <width>80</width>
<item row="0" column="0"> <height>30</height>
<widget class="QLabel" name="label_5"> </rect>
<property name="minimumSize"> </property>
<size> <property name="sizePolicy">
<width>50</width> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<height>0</height> <horstretch>0</horstretch>
</size> <verstretch>0</verstretch>
</property> </sizepolicy>
<property name="maximumSize"> </property>
<size> <property name="maximumSize">
<width>60</width> <size>
<height>16777215</height> <width>80</width>
</size> <height>30</height>
</property> </size>
<property name="text"> </property>
<string>音频缓存</string> <item>
</property> <property name="text">
</widget> <string>30ms</string>
</item> </property>
<item row="0" column="2"> </item>
<widget class="QLabel" name="label_3"> <item>
<property name="minimumSize"> <property name="text">
<size> <string>100ms</string>
<width>40</width> </property>
<height>0</height> </item>
</size> <item>
</property> <property name="text">
<property name="maximumSize"> <string>200ms</string>
<size> </property>
<width>60</width> </item>
<height>16777215</height> <item>
</size> <property name="text">
</property> <string>400ms</string>
<property name="text"> </property>
<string>缓存阈值</string> </item>
</property> <item>
</widget> <property name="text">
</item> <string>600ms</string>
<item row="1" column="2"> </property>
<widget class="QLabel" name="label_2"> </item>
<property name="sizePolicy"> <item>
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <property name="text">
<horstretch>0</horstretch> <string>800ms</string>
<verstretch>0</verstretch> </property>
</sizepolicy> </item>
</property> <item>
<property name="minimumSize"> <property name="text">
<size> <string>1000ms</string>
<width>40</width> </property>
<height>0</height> </item>
</size> </widget>
</property> <widget class="QLabel" name="label_5">
<property name="maximumSize"> <property name="geometry">
<size> <rect>
<width>60</width> <x>180</x>
<height>16777215</height> <y>80</y>
</size> <width>60</width>
</property> <height>30</height>
<property name="text"> </rect>
<string>抖动值</string> </property>
</property> <property name="minimumSize">
</widget> <size>
</item> <width>50</width>
</layout> <height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>音频缓存</string>
</property>
</widget>
<widget class="QLineEdit" name="videoBufEdit">
<property name="geometry">
<rect>
<x>250</x>
<y>120</y>
<width>64</width>
<height>30</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>60</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>70</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>视频缓存</string>
</property>
</widget> </widget>
</widget> </widget>
<resources/> <resources/>