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