From dac922eb29f14bf103b5e9911e11ce1c30597684 Mon Sep 17 00:00:00 2001
From: tangchao0503 <735056338@qq.com>
Date: Tue, 24 Mar 2026 18:48:09 +0800
Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8C=85=20=E4=BD=BF=E7=94=A8qrc?=
=?UTF-8?q?=E5=92=8Crc=E6=96=87=E4=BB=B6=EF=BC=88exe=E6=96=87=E4=BB=B6?=
=?UTF-8?q?=E5=9B=BE=E6=A0=87=EF=BC=89=E7=AE=A1=E7=90=86svg=E3=80=81png?=
=?UTF-8?q?=E7=AD=89=E8=B5=84=E6=BA=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 1 +
HPPA/FocusDialog.ui | 8 +--
HPPA/HPPA.cpp | 134 +++++++++++-------------------------
HPPA/HPPA.h | 2 +-
HPPA/HPPA.ico | Bin 67646 -> 0 bytes
HPPA/HPPA.qrc | 52 +++++++++++++-
HPPA/HPPA.rc | Bin 3224 -> 3302 bytes
HPPA/HPPA.ui | 4 +-
HPPA/HPPA.vcxproj | 2 +-
HPPA/HPPA.vcxproj.filters | 2 +-
HPPA/HyperImagerControl.cpp | 4 +-
HPPA/LayerTreeModel.cpp | 2 +-
HPPA/about.ui | 16 ++---
HPPA/focusWindow.cpp | 2 +-
HPPA/imageControl.cpp | 4 +-
HPPA/resource.h | 4 +-
16 files changed, 115 insertions(+), 122 deletions(-)
delete mode 100644 HPPA/HPPA.ico
diff --git a/.gitignore b/.gitignore
index a1005f8..cf9ac81 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@ HPPA类图.drawio
HPPA - 副本.ui
icon
ignore_*
+resources
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
diff --git a/HPPA/FocusDialog.ui b/HPPA/FocusDialog.ui
index eb0f76d..de6158b 100644
--- a/HPPA/FocusDialog.ui
+++ b/HPPA/FocusDialog.ui
@@ -13,10 +13,6 @@
调焦
-
-
- :/HPPA/HPPA.ico:/HPPA/HPPA.ico
-
QLineEdit {
background-color: #142D7F;
@@ -236,8 +232,8 @@ QSlider::handle:horizontal:pressed {
-
- icon/all/close.svgicon/all/close.svg
+
+ :/svg/resources/icons/svg/close.svg:/svg/resources/icons/svg/close.svg
diff --git a/HPPA/HPPA.cpp b/HPPA/HPPA.cpp
index ad1bf3c..3776121 100644
--- a/HPPA/HPPA.cpp
+++ b/HPPA/HPPA.cpp
@@ -148,63 +148,13 @@ HPPA::HPPA(QWidget* parent)
graphicsView_delete->setObjectName(QString::fromUtf8("graphicsView_delete"));
QSizePolicy sizePolicy1(QSizePolicy::Preferred, QSizePolicy::Preferred);
sizePolicy1.setHorizontalStretch(0);
-sizePolicy1.setVerticalStretch(0);
-sizePolicy1.setHeightForWidth(graphicsView_delete->sizePolicy().hasHeightForWidth());
+ sizePolicy1.setVerticalStretch(0);
+ sizePolicy1.setHeightForWidth(graphicsView_delete->sizePolicy().hasHeightForWidth());
graphicsView_delete->setSizePolicy(sizePolicy1);
graphicsView_delete->setFrameShape(QFrame::NoFrame);
graphicsView_delete->setFrameShadow(QFrame::Raised);
//gridLayout_toc->addWidget(graphicsView_delete, 0, 0, 1, 1);
- //2、没用,仅仅使用QTreeWidget实现的简略ui
- QTreeWidget* treeWidget = new QTreeWidget();
- treeWidget->setColumnCount(1);
- treeWidget->setIndentation(18);
- treeWidget->setRootIsDecorated(true);
- treeWidget->header()->hide();
- treeWidget->setStyleSheet(R"(
- QTreeWidget
- {
- color: #ACCDFF;
- }
- QTreeWidget::branch {
- background: transparent;
- }
-
- QTreeWidget::branch:has-children:!has-siblings:closed,
- QTreeWidget::branch:closed:has-children:has-siblings
- {
- border-image: none;
- image: url(D:/cpp_project_vs2022/HPPA/x64/Debug/3DModel/tree_tri_right.svg);
- }
- QTreeWidget::branch:open:has-children:!has-siblings,
- QTreeWidget::branch:open:has-children:has-siblings
- {
- border-image: none;
- image: url(D:/cpp_project_vs2022/HPPA/x64/Debug/3DModel/tree_tri_down.svg);
- }
- )");
-
- //QList items;
- //for (int i = 0; i < 3; ++i)
- // items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("tmp_image_%1").arg(i))));
- //treeWidget->insertTopLevelItems(0, items);
-
- QTreeWidgetItem* group1 = new QTreeWidgetItem(treeWidget);
- group1->setText(0, "Raster");
- group1->setExpanded(true); // 默认展开
-
- QTreeWidgetItem* group2 = new QTreeWidgetItem(treeWidget);
- group2->setText(0, "Vector");
- group2->setExpanded(true);
-
- QTreeWidgetItem* layerA = new QTreeWidgetItem(group1);
- layerA->setText(0, "tmp_image_1");
-
- QTreeWidgetItem* layerB = new QTreeWidgetItem(group1);
- layerB->setText(0, "tmp_image_2");
-
- //gridLayout_toc->addWidget(treeWidget, 0, 0, 1, 1);
-
//3、正经TOC
m_LayerTree = new LayerTree();
m_LayerTreeModel = new LayerTreeModel(m_LayerTree, this, true);
@@ -241,13 +191,13 @@ sizePolicy1.setHeightForWidth(graphicsView_delete->sizePolicy().hasHeightForWidt
QTreeView::branch:closed:has-children:has-siblings
{
border-image: none;
- image: url(D:/cpp_project_vs2022/HPPA/x64/Debug/3DModel/tree_tri_right.svg);
+ image: url(:/svg/resources/icons/svg/tree_tri_right.svg);
}
QTreeView::branch:open:has-children:!has-siblings,
QTreeView::branch:open:has-children:has-siblings
{
border-image: none;
- image: url(D:/cpp_project_vs2022/HPPA/x64/Debug/3DModel/tree_tri_down.svg);
+ image: url(:/svg/resources/icons/svg/tree_tri_down.svg);
}
)");
@@ -717,29 +667,29 @@ void HPPA::initMenubarToolbar()
sepWidget->setStyleSheet("background-color: #2C586C;"); // 调整颜色
}
- ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager.svg"));
- ui.action_auto_exposure->setIcon(QIcon(".//icon//all//exposure.svg"));
- ui.action_focus->setIcon(QIcon(".//icon//all//focus.svg"));
- ui.action_dark->setIcon(QIcon(".//icon//all//dark.svg"));
- ui.action_reference->setIcon(QIcon(".//icon//all//reference.svg"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record.svg"));
- ui.actionOpenDirectory->setIcon(QIcon(".//icon//all//openDirectory.svg"));
+ ui.action_connect_imager->setIcon(QIcon(":/svg/resources/icons/svg/connect_imager.svg"));
+ ui.action_auto_exposure->setIcon(QIcon(":/svg/resources/icons/svg/exposure.svg"));
+ ui.action_focus->setIcon(QIcon(":/svg/resources/icons/svg/focus.svg"));
+ ui.action_dark->setIcon(QIcon(":/svg/resources/icons/svg/dark.svg"));
+ ui.action_reference->setIcon(QIcon(":/svg/resources/icons/svg/reference.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record.svg"));
+ ui.actionOpenDirectory->setIcon(QIcon(":/svg/resources/icons/svg/openDirectory.svg"));
- ui.mActionPan->setIcon(QIcon(".//icon//all//pan.svg"));
- ui.mActionSpectral->setIcon(QIcon(".//icon//all//spectral.svg"));
+ ui.mActionPan->setIcon(QIcon(":/svg/resources/icons/svg/pan.svg"));
+ ui.mActionSpectral->setIcon(QIcon(":/svg/resources/icons/svg/spectral.svg"));
connect(ui.mActionPan, &QAction::toggled, this, [=](bool checked) {
if (checked)
- ui.mActionPan->setIcon(QIcon(".//icon//all//pan_done.svg"));
+ ui.mActionPan->setIcon(QIcon(":/svg/resources/icons/svg/pan_done.svg"));
else
- ui.mActionPan->setIcon(QIcon(".//icon//all//pan.svg"));
+ ui.mActionPan->setIcon(QIcon(":/svg/resources/icons/svg/pan.svg"));
});
connect(ui.mActionSpectral, &QAction::toggled, this, [=](bool checked) {
if (checked)
- ui.mActionSpectral->setIcon(QIcon(".//icon//all//spectral_done.svg"));
+ ui.mActionSpectral->setIcon(QIcon(":/svg/resources/icons/svg/spectral_done.svg"));
else
- ui.mActionSpectral->setIcon(QIcon(".//icon//all//spectral.svg"));
+ ui.mActionSpectral->setIcon(QIcon(":/svg/resources/icons/svg/spectral.svg"));
});
// 使用样式表设置透明背景
@@ -857,7 +807,7 @@ void HPPA::recordFromRobotArm(int fileCounter)
m_Imager->setRecordControlState(false);
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record_done.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record_done.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
//qDebug() << "recordFromRobotArm: 1111111111111111111111";
@@ -874,7 +824,7 @@ void HPPA::recordFromRobotArm(int fileCounter)
emit StartRecordSignal();
ui.action_start_recording->setText(QString::fromLocal8Bit("采集中"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record_ing.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record_ing.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
//qDebug() << "recordFromRobotArm: 2222222222222222222222";
}
@@ -927,13 +877,13 @@ void HPPA::updateImagerPicture(const QString& actionName)
{
QString picPath;
if (actionName == "mActionPica_L")
- picPath = ".//icon//imagerPicture//L.png";
+ picPath = ":/imagerPicture/resources/icons/imagerPicture/L.png";
else if (actionName == "mActionPica_NIR")
- picPath = ".//icon//imagerPicture//IR.png";
+ picPath = ":/imagerPicture/resources/icons/imagerPicture/IR.png";
else if (actionName == "mActionPika_XC2")
- picPath = ".//icon//imagerPicture//XC2.png";
+ picPath = ":/imagerPicture/resources/icons/imagerPicture/XC2.png";
else if (actionName == "mActionCorning_410")
- picPath = ".//icon//imagerPicture//corning410.png";
+ picPath = ":/imagerPicture/resources/icons/imagerPicture/corning410.png";
if (!picPath.isEmpty())
{
@@ -941,7 +891,7 @@ void HPPA::updateImagerPicture(const QString& actionName)
if (!pixmap.isNull())
{
QImage img = pixmap.toImage().convertToFormat(QImage::Format_ARGB32);
- const int threshold = 220;
+ const int threshold = 240;
for (int y = 0; y < img.height(); ++y)
{
QRgb* line = reinterpret_cast(img.scanLine(y));
@@ -1363,7 +1313,7 @@ void HPPA::onStartRecordStep1()
emit StartRecordSignal();//发射开始采集信号
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record_ing.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record_ing.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
}
else
@@ -1372,7 +1322,7 @@ void HPPA::onStartRecordStep1()
m_RecordState -= 1;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record_done.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record_done.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
}
return;
@@ -1387,7 +1337,7 @@ void HPPA::onStartRecordStep1()
removeAllLayersInRasterGroup();
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record_ing.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record_ing.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
//应该先控制马达运动,当马达运动后,再开始光谱仪采集(发射开始采集信号)
@@ -1402,7 +1352,7 @@ void HPPA::onStartRecordStep1()
m_RecordState -= 1;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record_done.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record_done.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
}
return;
@@ -1423,7 +1373,7 @@ void HPPA::onStartRecordStep1()
m_tmc->run();
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record_ing.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record_ing.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
}
else
@@ -1433,7 +1383,7 @@ void HPPA::onStartRecordStep1()
m_RecordState--;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record_done.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record_done.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
}
@@ -1831,7 +1781,7 @@ void HPPA::onconnect()
return;
}
- ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager_ing.svg"));
+ ui.action_connect_imager->setIcon(QIcon(":/svg/resources/icons/svg/connect_imager_ing.svg"));
m_Imager->moveToThread(m_RecordThread);
m_RecordThread->start();
@@ -1900,7 +1850,7 @@ void HPPA::onconnect()
}
catch (std::exception const& e)
{
- ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager.svg"));
+ ui.action_connect_imager->setIcon(QIcon(":/svg/resources/icons/svg/connect_imager.svg"));
std::cerr << "Error: " << e.what() << std::endl;
@@ -1918,18 +1868,18 @@ void HPPA::onconnect()
void HPPA::testImagerStatus()
{
- ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager_done.svg"));
+ ui.action_connect_imager->setIcon(QIcon(":/svg/resources/icons/svg/connect_imager_done.svg"));
//m_TestImagerStausThread->start();
}
void HPPA::autoExposureFinished()
{
- ui.action_auto_exposure->setIcon(QIcon(".//icon//all//exposure_done.svg"));
+ ui.action_auto_exposure->setIcon(QIcon(":/svg/resources/icons/svg/exposure_done.svg"));
}
void HPPA::onAutoExposure()
{
- ui.action_auto_exposure->setIcon(QIcon(".//icon//all//exposure_ing.svg"));
+ ui.action_auto_exposure->setIcon(QIcon(":/svg/resources/icons/svg/exposure_ing.svg"));
double ReturnedExposureTime = m_Imager->auto_exposure();
@@ -2010,7 +1960,7 @@ void HPPA::onDark()
msgBox.setText(QString::fromLocal8Bit("采集暗电流,请确保镜头盖盖上!"));
msgBox.exec();
- ui.action_dark->setIcon(QIcon(".//icon//all//dark_ing.svg"));
+ ui.action_dark->setIcon(QIcon(":/svg/resources/icons/svg/dark_ing.svg"));
QAction* checked = moveplatformActionGroup->checkedAction();
QString checkedName = checked->objectName();
@@ -2033,7 +1983,7 @@ void HPPA::onDark()
void HPPA::recordDarkFinish()
{
- ui.action_dark->setIcon(QIcon(".//icon//all//dark_done.svg"));
+ ui.action_dark->setIcon(QIcon(":/svg/resources/icons/svg/dark_done.svg"));
//ui.mainToolBar->widgetForAction(ui.action_dark)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
}
@@ -2043,7 +1993,7 @@ void HPPA::onReference()
msgBox.setText(QString::fromLocal8Bit("请确保白板放置正确!"));
msgBox.exec();
- ui.action_reference->setIcon(QIcon(".//icon//all//reference_ing.svg"));
+ ui.action_reference->setIcon(QIcon(":/svg/resources/icons/svg/reference_ing.svg"));
QAction* checked = moveplatformActionGroup->checkedAction();
QString checkedName = checked->objectName();
@@ -2066,7 +2016,7 @@ void HPPA::onReference()
void HPPA::recordWhiteFinish()
{
- ui.action_reference->setIcon(QIcon(".//icon//all//reference_done.svg"));
+ ui.action_reference->setIcon(QIcon(":/svg/resources/icons/svg/reference_done.svg"));
//ui.mainToolBar->widgetForAction(ui.action_reference)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
}
@@ -2212,7 +2162,7 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberMeet()
std::cout << "停止采集原因:帧数采集完了。" << std::endl;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record_done.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record_done.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
m_RecordState++;//当自动停止采集
@@ -2236,7 +2186,7 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
std::cout << "停止采集原因:(1)帧数没有采集够时,马达到达最大位置;(2)手动停止采集。" << std::endl;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record_done.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record_done.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
m_RecordState++;
@@ -2245,7 +2195,7 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
void HPPA::onsequenceComplete()
{
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
- ui.action_start_recording->setIcon(QIcon(".//icon//all//record_done.svg"));
+ ui.action_start_recording->setIcon(QIcon(":/svg/resources/icons/svg/record_done.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
m_RecordState++;
diff --git a/HPPA/HPPA.h b/HPPA/HPPA.h
index e988644..2492ed7 100644
--- a/HPPA/HPPA.h
+++ b/HPPA/HPPA.h
@@ -161,7 +161,7 @@ class WidgetWithBackgroundPicture : public QWidget
public:
explicit WidgetWithBackgroundPicture(QWidget* parent = nullptr)
: QWidget(parent),
- m_pixmap(".//icon//titile_bar_bgp.png") // 使用资源或绝对路径
+ m_pixmap(":/png/resources/icons/png/titile_bar_bgp.png") // 使用资源或绝对路径
{
// 可选:设置初始大小
resize(800, 600);
diff --git a/HPPA/HPPA.ico b/HPPA/HPPA.ico
deleted file mode 100644
index e76ecbc158a3d9ec1ee47bad83967079b66dc0c2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 67646
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
diff --git a/HPPA/HPPA.qrc b/HPPA/HPPA.qrc
index 5285ca9..d180d7a 100644
--- a/HPPA/HPPA.qrc
+++ b/HPPA/HPPA.qrc
@@ -1,5 +1,53 @@
-
- HPPA.ico
+
+ resources/icons/svg/arrow_down.svg
+ resources/icons/svg/arrow_up.svg
+ resources/icons/svg/close.svg
+ resources/icons/svg/connect_imager.svg
+ resources/icons/svg/connect_imager_done.svg
+ resources/icons/svg/connect_imager_ing.svg
+ resources/icons/svg/dark.svg
+ resources/icons/svg/dark_done.svg
+ resources/icons/svg/dark_ing.svg
+ resources/icons/svg/exposure.svg
+ resources/icons/svg/exposure_done.svg
+ resources/icons/svg/exposure_ing.svg
+ resources/icons/svg/focus.svg
+ resources/icons/svg/focus_done.svg
+ resources/icons/svg/focus_ing.svg
+ resources/icons/svg/openDirectory.svg
+ resources/icons/svg/openDirectory_done.svg
+ resources/icons/svg/pan.svg
+ resources/icons/svg/pan_done.svg
+ resources/icons/svg/record.svg
+ resources/icons/svg/record_done.svg
+ resources/icons/svg/record_ing.svg
+ resources/icons/svg/reference.svg
+ resources/icons/svg/reference_done.svg
+ resources/icons/svg/reference_ing.svg
+ resources/icons/svg/software_icon.svg
+ resources/icons/svg/software_icon_small.svg
+ resources/icons/svg/spectral.svg
+ resources/icons/svg/spectral_done.svg
+ resources/icons/svg/tree_tri_down.svg
+ resources/icons/svg/tree_tri_right.svg
+ resources/icons/svg/mIconRaster.svg
+
+
+ resources/icons/png/Spectral_Insight_27.png
+ resources/icons/png/Spectral_Insight_54.png
+ resources/icons/png/Spectral_Insight_170.png
+ resources/icons/png/Spectral_Insight_340.png
+ resources/icons/png/titile_bar_bgp.png
+ resources/icons/png/titile_bar_bgp2x.png
+
+
+ resources/icons/imagerPicture/corning410.png
+ resources/icons/imagerPicture/IR.png
+ resources/icons/imagerPicture/L.png
+ resources/icons/imagerPicture/XC2.png
+
+
+ resources/icons/ico/Spectral_Insight_128.ico
diff --git a/HPPA/HPPA.rc b/HPPA/HPPA.rc
index 510337bc270b49746d0d565a0ccf08960760d259..e154492090634d05268f7429ed2b1fba5019f05a 100644
GIT binary patch
delta 85
zcmbOs`Al*{0_Vgw0oP)N7$D4KNM^`q$YVg}fy9Fu3K&v>awQB!42cXm4Dk$}U{#q6
V=?ob_(RcSpectral Insight
-
- icon/all/png/Group 356_slices/22.pngicon/all/png/Group 356_slices/22.png
+
+ :/ico/resources/icons/ico/Spectral_Insight_128.ico:/ico/resources/icons/ico/Spectral_Insight_128.ico
diff --git a/HPPA/HPPA.vcxproj b/HPPA/HPPA.vcxproj
index f4c8929..a41b3c4 100644
--- a/HPPA/HPPA.vcxproj
+++ b/HPPA/HPPA.vcxproj
@@ -249,7 +249,7 @@
-
+
diff --git a/HPPA/HPPA.vcxproj.filters b/HPPA/HPPA.vcxproj.filters
index a8444f3..198447c 100644
--- a/HPPA/HPPA.vcxproj.filters
+++ b/HPPA/HPPA.vcxproj.filters
@@ -413,7 +413,7 @@
-
+
Resource Files
diff --git a/HPPA/HyperImagerControl.cpp b/HPPA/HyperImagerControl.cpp
index 0028c32..1d2537d 100644
--- a/HPPA/HyperImagerControl.cpp
+++ b/HPPA/HyperImagerControl.cpp
@@ -49,13 +49,13 @@ HyperImagerControl::HyperImagerControl(QWidget* parent)
}
QDoubleSpinBox::up-arrow {
- image: url(D:/cpp_project_vs2022/HPPA/HPPA/icon/all/arrow_up.svg);
+ image: url(:/svg/resources/icons/svg/arrow_up.svg);
width: 10px;
height: 10px;
}
QDoubleSpinBox::down-arrow {
- image: url(D:/cpp_project_vs2022/HPPA/HPPA/icon/all/arrow_down.svg);
+ image: url(:/svg/resources/icons/svg/arrow_down.svg);
width: 10px;
height: 10px;
}
diff --git a/HPPA/LayerTreeModel.cpp b/HPPA/LayerTreeModel.cpp
index d0e5dda..740ff4f 100644
--- a/HPPA/LayerTreeModel.cpp
+++ b/HPPA/LayerTreeModel.cpp
@@ -64,7 +64,7 @@ QVariant LayerTreeModel::data(const QModelIndex& index, int role) const
else if (LayerTreeNode::isLayer(tmp))
{
QString basePath = QCoreApplication::applicationDirPath();
- return QIcon(basePath + "/icons/mIconRaster.svg");
+ return QIcon(":/svg/resources/icons/svg/mIconRaster.svg");
}
}
diff --git a/HPPA/about.ui b/HPPA/about.ui
index b4f050e..c27e823 100644
--- a/HPPA/about.ui
+++ b/HPPA/about.ui
@@ -16,10 +16,6 @@
Dialog
-
-
- C:/Users/73505/.designer/backup/HPPA.icoC:/Users/73505/.designer/backup/HPPA.ico
-
0
@@ -96,7 +92,7 @@
- icon/all/png/Group 356_slices/22.png
+ :/png/resources/icons/png/Spectral_Insight_27.png
@@ -173,8 +169,8 @@ QPushButton:pressed
-
- icon/all/close.svgicon/all/close.svg
+
+ :/svg/resources/icons/svg/close.svg:/svg/resources/icons/svg/close.svg
@@ -196,7 +192,7 @@ QPushButton:pressed
- icon/all/png/Group 356_slices/Group 356@2x.png
+ :/png/resources/icons/png/Spectral_Insight_170.png
@@ -305,6 +301,8 @@ QPushButton:pressed
-
+
+
+
diff --git a/HPPA/focusWindow.cpp b/HPPA/focusWindow.cpp
index 1acf6a9..471c884 100644
--- a/HPPA/focusWindow.cpp
+++ b/HPPA/focusWindow.cpp
@@ -10,7 +10,7 @@ focusWindow::focusWindow(QWidget *parent, ImagerOperationBase* imager)
setWindowFlags(Qt::FramelessWindowHint);
ui.titlebarWidget->installEventFilter(this);
- QSvgRenderer svgRenderer(QString(".//icon//all//focus.svg"));
+ QSvgRenderer svgRenderer(QString(":/svg/resources/icons/svg/focus.svg"));
QPixmap pixmap(24, 24);
pixmap.fill(Qt::transparent); // 背景透明
QPainter painter(&pixmap);
diff --git a/HPPA/imageControl.cpp b/HPPA/imageControl.cpp
index e2c95db..aa84d92 100644
--- a/HPPA/imageControl.cpp
+++ b/HPPA/imageControl.cpp
@@ -64,13 +64,13 @@ ImageControl::ImageControl(QWidget* parent)
}
QDoubleSpinBox::up-arrow {
- image: url(D:/cpp_project_vs2022/HPPA/HPPA/icon/all/arrow_up.svg);
+ image: url(:/svg/resources/icons/svg/arrow_up.svg);
width: 10px;
height: 10px;
}
QDoubleSpinBox::down-arrow {
- image: url(D:/cpp_project_vs2022/HPPA/HPPA/icon/all/arrow_down.svg);
+ image: url(:/svg/resources/icons/svg/arrow_down.svg);
width: 10px;
height: 10px;
}
diff --git a/HPPA/resource.h b/HPPA/resource.h
index 0cc8414..327f5b5 100644
--- a/HPPA/resource.h
+++ b/HPPA/resource.h
@@ -2,13 +2,13 @@
// Microsoft Visual C++ ɵİļ
// HPPA.rc ʹ
//
-#define IDI_ICON1 101
+#define IDI_ICON1 106
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 102
+#define _APS_NEXT_RESOURCE_VALUE 107
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101