This commit is contained in:
2025-08-15 16:36:54 +08:00
parent 3d17218dad
commit d98592060d
1324 changed files with 5841 additions and 49568 deletions
+54 -24
View File
@@ -20,7 +20,6 @@
#include <qqueue.h>
#include <qthread.h>
#include <qcombobox.h>
#include <qmutex.h>
#include <qmap.h>
#include <qbuffer.h>
#include <qimagewriter.h>
@@ -47,7 +46,17 @@ public:
//scene->addItem(rectGroup);
setScene(scene);
#if switchToTongYongUi == true
setStyleSheet(R"(
QGraphicsView#SonGraphicsView {
background: rgb(32, 36, 40);
background-repeat: no-repeat;
background-position: center center;
border-radius: 10px; /* 圆角半径 */
}
)");
#else
setStyleSheet(R"(
QGraphicsView#SonGraphicsView {
background: transparent;
@@ -55,6 +64,7 @@ public:
background-repeat: no-repeat;
background-position: center center;
})");
#endif
}
void setImg(const QPixmap& pixmap) {
@@ -239,46 +249,54 @@ private:
class ImageWidget : public QWidget {
Q_OBJECT
public:
fancyButton* switchBtn;
QComboBox switchBox;
QMutex switchBoxMutex;
ImageWidget(QWidget* parent = nullptr) : QWidget(parent) {
QVBoxLayout* layout = new QVBoxLayout(this);
layout->setContentsMargins(5, 5, 5, 5);
setObjectName("ImageWidget");
setStyleSheet(R"(
#ImageWidget{
background: rgb(50, 55, 60);
})");
layout->setContentsMargins(2, 2, 2, 2);
viewer = new SonGraphicsView("");
this->setMaximumSize(9999, 9999);
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
QFont font("微软雅黑", 12, QFont::Bold);
QHBoxLayout* hLayout = new QHBoxLayout();
label = new QLabel(u8"相机1");
QFont font("微软雅黑", 8 , QFont::Bold);
QWidget* hWidget = new QWidget(this);
QHBoxLayout* hLayout = new QHBoxLayout(hWidget);
hWidget->setFixedHeight(15);
#if switchToTongYongUi == 0
auto spaceItem = new QSpacerItem(100, 1);
hLayout->addSpacerItem(spaceItem);
#endif
label = new QLabel(u8"相机标签");
label->setAlignment(Qt::AlignLeft);
label->setFont(font);
label->setPalette(palette);
label->setFixedHeight(10 * 2);
switchBox.setFont(font);
switchBox.setPalette(palette);
switchBox.setFixedWidth(100);
#if switchToTongYongUi == 1
switchBox.hide();
#endif
connect(&switchBox, &QComboBox::currentTextChanged, [=](QString type)
{
switchViewType(type);
});
label->setAlignment(Qt::AlignCenter);
hLayout->addWidget(label);
hLayout->addWidget(&switchBox);
hLayout->setContentsMargins(0, 0, 0, 0);
switchBtn = new fancyButton(
30,
30,
QIcon(":/icon/icon/switch.png"),
"切换结果图与原图"
);
//hLayout->addWidget(switchBtn);
layout->addLayout(hLayout);
layout->addWidget(hWidget);
layout->addWidget(viewer);
viewer->setDragMode(QGraphicsView::ScrollHandDrag);
@@ -298,7 +316,7 @@ public:
//view->scene->addItem(backgroundItem);
setContextMenuPolicy(Qt::CustomContextMenu);
connect(this, &QWidget::customContextMenuRequested, this, &ImageWidget::showContextMenu);
switchBtn->click();//切换结果图
}
~ImageWidget()
{
@@ -369,6 +387,7 @@ protected:
}
}
private:
#if switchToTongYongUi == 0
void paintEvent(QPaintEvent* event) override {
QWidget::paintEvent(event);
@@ -376,6 +395,20 @@ private:
painter.setPen(QPen(Qt::white, 1));
painter.drawRect(rect().adjusted(1, 1, -2, -2));
}
#else
void paintEvent(QPaintEvent* event) override {
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
int radius = 10; // 圆角半径
QRect r = rect();
// 填充圆角背景
painter.setBrush(QColor(50, 55, 60));
painter.setPen(Qt::NoPen);
painter.drawRoundedRect(r, radius, radius);
}
#endif
void showContextMenu(const QPoint& pos) {
//QMenu contextMenu(tr("Context Menu"), this);
@@ -426,15 +459,12 @@ public:
void disableAllSwitchBtn()
{
for (auto widget : ImageWidgetList)
widget->switchBtn->hide();
}
bool showImg(QPixmap img, QString nickName, QString _type ="null")
{
if (map.find(nickName) == map.end())
if (map.find(nickName) == map.end()) {
qCritical() << "图像接收方与现有不符=>" << nickName;
return false;
}
if (_type == "null")
map[nickName]->showImgOnGraphicsView(img);
map[nickName]->sendImg(_type, img);