最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

notepad介紹及插件cmake編譯過(guò)程(替代notepad++)

 更新時(shí)間:2023年03月18日 16:58:44   作者:特立獨(dú)行的貓a  
這篇文章主要介紹了notepad介紹及插件cmake編譯過(guò)程(替代notepad++),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Notepad++ 是一個(gè)文本編輯器小軟件,用來(lái)替代windows自帶的記事本。然而Notepad++軟件的作者太霸道,如果你不贊同他的觀點(diǎn),Notepad++將會(huì)在你的源碼里面插入隨機(jī)字符。推薦一款國(guó)產(chǎn)的開(kāi)源跨平臺(tái)軟件NDD(notepad--),功能一點(diǎn)兒不弱,體積小巧打開(kāi)速度快,且?guī)в形募A比對(duì)功能,連收費(fèi)的beyondCompare都省了。且可以為它貢獻(xiàn)插件啦,添加一些有意思的功能,比如我想給它添加個(gè)ChatGPT聊天機(jī)器人插件。期待更多優(yōu)秀的國(guó)產(chǎn)軟件,為國(guó)產(chǎn)化崛起貢獻(xiàn)力量。

NDD(notepad--)介紹

Notepad–是一個(gè)使用C++編寫(xiě)的文本編輯器,目前支持Win/Linux/Mac平臺(tái)。在gitee上的項(xiàng)目名稱為NDD。gitee倉(cāng)庫(kù)地址:

https://gitee.com/cxasm/notepad--

目標(biāo)是要進(jìn)行文本編輯類軟件的國(guó)產(chǎn)可替代,重點(diǎn)在國(guó)產(chǎn)Uos/Linux系統(tǒng)、Mac 系統(tǒng)上發(fā)展。

一個(gè)支持windows/linux/mac的文本編輯器,目標(biāo)是要國(guó)產(chǎn)替換同類軟件,來(lái)自中國(guó)。對(duì)比其它競(jìng)品Notepad類軟件而言,優(yōu)勢(shì)是可以跨平臺(tái),支持linux mac操作系統(tǒng)。

 可直接下載使用,發(fā)布版的軟件下載地址:

https://gitee.com/cxasm/notepad--/releases/tag/v1.21

msvc工具鏈下載安裝

Microsoft C++ Build Tools,通過(guò)可編寫(xiě)腳本的獨(dú)立安裝程序提供 MSVC 工具集,無(wú)需使用 Visual Studio。 如果從命令行界面(例如,持續(xù)集成工作流中)生成面向 Windows 的 C++ 庫(kù)和應(yīng)用程序, 推薦使用此工具。

為什么使用msvc工具?因?yàn)閂isual Studio太大啦,好幾個(gè)G,且我已安裝過(guò)一個(gè)版本了,不想再安裝一個(gè)新版本了。編譯NDD源碼的需注意,QT框架需要5.11以上。c++編譯器至少需要支持c++17以上才行。直接下載msvc工具鏈1G左右大小,且下載速度超快。

msvc工具鏈下載地址:

Microsoft C++ Build Tools - Visual Studio

 安裝這個(gè)需要注意的是,一定要勾選用于Windows的c++ Cmake工具這一項(xiàng)。

NDD源碼編譯

雖然NDD發(fā)布版提供了現(xiàn)成的軟件可以用,但是對(duì)于開(kāi)發(fā)來(lái)說(shuō),開(kāi)發(fā)的插件必須使用同一套的MSVC和QT版本才行(VS2019和QT5.15.2),否則容易出現(xiàn)兼容性問(wèn)題,對(duì)于開(kāi)發(fā)測(cè)試插件來(lái)說(shuō),直接連ndd源碼也一塊兒編譯,最簡(jiǎn)單直接。且最終想要貢獻(xiàn)插件時(shí)也不用擔(dān)心,作者鼓勵(lì)大家定做插件,熱門(mén)插件會(huì)給你合并進(jìn)發(fā)布版中。

源碼編譯比較簡(jiǎn)單,作者提供的有編譯文檔介紹,windows下推薦編譯環(huán)境:vs2017及以上,qt tool 插件。這里介紹下使用cmake編譯,也很簡(jiǎn)單,在源碼的how_build目錄里有CMakeLists.txt文件,拷貝到項(xiàng)目根目錄中,設(shè)置好cmake環(huán)境,就可以直接編譯了。

cmake_minimum_required(VERSION 3.16)
project(NotePad-- VERSION 1.22.0)
 
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 17)
 
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
 
add_definitions(
        -DCMAKE_CXX_STANDARD=17
)
 
set(CMAKE_PREFIX_PATH "D:/Qt5.12.11/Qt5.12.11/5.12.11/msvc2015_64/lib/cmake")
 
find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns)
 
# qscint 關(guān)鍵依賴庫(kù)
add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint)
 
# 插件庫(kù)包含
# helloworld 動(dòng)態(tài)插件庫(kù)
add_subdirectory(${PROJECT_SOURCE_DIR}/src/plugin/helloworld)
 
# win下需要開(kāi)啟UNICODE進(jìn)行支持TCHAR
if(CMAKE_HOST_WIN32)
    add_definitions(-D_UNICODE -DUNICODE)
endif()
 
 
if(${PLUGIN_EN})
    if(${PLUGIN_EN}  STREQUAL on)
        add_definitions(-DNO_PLUGIN=1)
    endif(${PLUGIN_EN})    
endif()
 
 
 
file(GLOB UI_SRC ${PROJECT_SOURCE_DIR}/src/*.ui)
set(UI_SRC ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/cceditor/ccnotepad.ui)
aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/src/cceditor SRC)
 
 
if(CMAKE_HOST_WIN32)
# 添加 WIN32 保證主程序啟動(dòng)沒(méi)有命令行
    list(APPEND WIN_RCS ${PROJECT_SOURCE_DIR}/src/RealCompareToMinGw.rc)
    add_executable(${PROJECT_NAME} WIN32 ${WIN_RCS} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc)
else()
    add_executable(${PROJECT_NAME} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc)
endif()
 
target_include_directories(${PROJECT_NAME} PRIVATE
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/src/cceditor
 
${PROJECT_SOURCE_DIR}/src/qscint/src
${PROJECT_SOURCE_DIR}/src/qscint/src/Qsci
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/src
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/include
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/lexlib
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/boostregex
)
 
target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network  Qt5::PrintSupport Qt5::XmlPatterns)
 
# set(PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}/bin")
# set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
 
if(CMAKE_HOST_UNIX)
    install(
        TARGETS ${PROJECT_NAME}
        DESTINATION "bin"
    )
 
    install(DIRECTORY  ${PROJECT_SOURCE_DIR}/src/linux/usr
            DESTINATION "/")
 
    include(${PROJECT_SOURCE_DIR}/cmake/deb_package_config.cmake) 
    include(CPack)
elseif(CMAKE_HOST_WIN32)
    install(TARGETS ${PROJECT_NAME}
            DESTINATION "/")
 
    install(DIRECTORY  ${PROJECT_SOURCE_DIR}/build/bin/
            DESTINATION "/")
    # 設(shè)置軟件版本
    set(CPACK_PACKAGE_NAME "NotePad--")
    set(CPACK_PACKAGE_DESCRIPTION "NotePad--")
    set(CPACK_PACKAGE_COPYRIGHT "Copyright (c) 2023")
    set(CPACK_PACKAGE_VERSION "1.22.0")
    set(CPACK_PACKAGE_VERSION_MAJOR "1")
    set(CPACK_PACKAGE_VERSION_MINOR "22")
    set(CPACK_PACKAGE_VERSION_PATCH "0")
 
    #include(${PROJECT_SOURCE_DIR}/cmake/nsis_package_config.cmake)
    include(CPack)
endif()

源碼編譯注意事項(xiàng):

# qscint 關(guān)鍵依賴庫(kù)
add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint)
 
......
target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network  Qt5::PrintSupport Qt5::XmlPatterns)

從以上可看出,源碼里附帶的那個(gè)how_build文件夾,拷貝出的默認(rèn)的CmakeLists.txt文件,是包含了 qscint 關(guān)鍵依賴庫(kù),且默認(rèn)里面是把qscint生成的靜態(tài)的。感覺(jué)這樣有點(diǎn)別扭。因?yàn)樽罱K是想把qscint庫(kù)動(dòng)態(tài)使用的。

因此這里編譯NDD源碼,注釋掉了這個(gè),先單獨(dú)編譯qscint為動(dòng)態(tài)庫(kù)。有個(gè)注意事項(xiàng),編譯qscint動(dòng)態(tài)庫(kù),需增加宏定義add_definitions(-DQSCINTILLA_MAKE_DLL),既讓Q_DECL_EXPORT生效。這個(gè)會(huì)讓動(dòng)態(tài)庫(kù)同時(shí)生成dll和lib文件。

然后修改NDD主程序的CmakeLists.txt文件,引入和使用上一步生成的qscint庫(kù)。

本以為很順利,結(jié)果編譯報(bào)錯(cuò)啦。

 解決辦法:

再編譯NDD源碼時(shí),改下庫(kù)的使用方式。在 windows 中構(gòu)建此庫(kù)時(shí)應(yīng)該采用 O DECL EXPORT, 并且在 windows 中使用此庫(kù)時(shí)應(yīng)該采用 Q DECL IMPORT。

 NDD插件demo及編譯

插件的制作和編譯,作者提供的有插件編程開(kāi)發(fā)說(shuō)明文檔。這里介紹下cmake的編譯方法,相對(duì)更簡(jiǎn)單些。插件需要依賴qscintila庫(kù),先編譯出qscintila庫(kù)。源碼notepad--\src\qscint文件夾,CmakeLists.txt文件幾乎不用咋改動(dòng),即可成功編譯。需要注意的是:

set(CMAKE_PREFIX_PATH "D:/Qt5.12.11/Qt5.12.11/5.12.11/msvc2015_64/lib/cmake")
add_definitions(-DBOOST_REGEX_STANDALONE)

增加-DBOOST_REGEX_STANDALONE這個(gè)宏定義,否則還需要依賴Boost庫(kù)。加上這個(gè)可獨(dú)立編譯成功啦。 需要注意的是,cmakeLists.txt 中增加以下配置,支持debug和其他模式下找到對(duì)應(yīng)的庫(kù)。

link_directories(
        ${CMAKE_CURRENT_SOURCE_DIR}/
)
 
target_link_libraries(${PROJECT_NAME} PRIVATE
        debug qmyedit_qt5d
        optimized qmyedit_qt5)

另外還需注意的是,如果是要把 qscintila庫(kù)動(dòng)態(tài)的使用,則需要定義宏:

add_definitions(-DQSCINTILLA_MAKE_DLL)

這個(gè)是#define QSCINTILLA_EXPORT Q_DECL_EXPORT,Q_DECL_EXPORT宏主要為了導(dǎo)出這個(gè)類,生成.dll的同時(shí)生成.lib文件(注意這里的lib文件不是靜態(tài)庫(kù),而是供外部鏈接使用的)提供給外部接口供其他類使用。 

cmake_minimum_required(VERSION 3.16)
project(qscint CXX)
 
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
 
set(CMAKE_PREFIX_PATH "D:/Qt5.12.11/Qt5.12.11/5.12.11/msvc2015_64/lib/cmake")
add_definitions(-DBOOST_REGEX_STANDALONE)
find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport)
 
aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/scintilla/lexers SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/scintilla/lexlib SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/scintilla/src SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/scintilla/boostregex SRC)
 
file(GLOB MOC_HEADER ${PROJECT_SOURCE_DIR}/src/Qsci/*.h)
 
#message(${MOC_HEADER})
 
add_library(${PROJECT_NAME} STATIC ${SRC} ${MOC_HEADER})
 
# add_definitions(-DQSCINTILLA_MAKE_DLL)
# add_library(${PROJECT_NAME} SHARED ${SRC} ${MOC_HEADER})
 
target_compile_definitions(${PROJECT_NAME} PRIVATE SCINTILLA_QT SCI_LEXER INCLUDE_DEPRECATED_FEATURES)
 
target_include_directories(${PROJECT_NAME} PRIVATE
${PROJECT_SOURCE_DIR}/scintilla/lexlib
${PROJECT_SOURCE_DIR}/scintilla/boostregex
)
 
target_include_directories(${PROJECT_NAME} PUBLIC
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/src/Qsci
${PROJECT_SOURCE_DIR}/scintilla/src
${PROJECT_SOURCE_DIR}/scintilla/include)
 
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport)
 
if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
    set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "qmyedit_qt5")
else()
    set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "qmyedit_qt5d")
endif()

插件demo 

#include <qobject.h>
#include <qstring.h>
#include <pluginGl.h>
#include <functional>
#include <qsciscintilla.h>
#include "qttestclass.h"
#include "NDDMyPlugin.h"
 
#define NDD_EXPORTDLL
 
#if defined(Q_OS_WIN)
	#if defined(NDD_EXPORTDLL)
		#define NDD_EXPORT __declspec(dllexport)
	#else
		#define NDD_EXPORT __declspec(dllimport)
	#endif
#else
	#define NDD_EXPORT __attribute__((visibility("default")))
#endif
 
#ifdef __cplusplus
	extern "C" {
#endif
 
	NDD_EXPORT bool NDD_PROC_IDENTIFY(NDD_PROC_DATA* pProcData);
	NDD_EXPORT int NDD_PROC_MAIN(QWidget* pNotepad, const QString& strFileName, std::function<QsciScintilla* ()>getCurEdit, NDD_PROC_DATA* procData);
 
 
#ifdef __cplusplus
	}
#endif
NDDMyPlugin *nddMyPlugin = nullptr;
static NDD_PROC_DATA s_procData;
static QWidget* s_pMainNotepad = nullptr;
std::function<QsciScintilla* ()> s_getCurEdit;
 
bool NDD_PROC_IDENTIFY(NDD_PROC_DATA* pProcData)
{
	if(pProcData == NULL)
	{
		return false;
	}
	pProcData->m_strPlugName = QObject::tr("Hello World Plug");
	pProcData->m_strComment = QObject::tr("char to Upper.");
 
	pProcData->m_version = QString("v1.0");
	pProcData->m_auther = QString("yangqq.xyz");
 
	pProcData->m_menuType = 1;
 
	return true;
}
 
//則點(diǎn)擊菜單欄按鈕時(shí),會(huì)自動(dòng)調(diào)用到該插件的入口點(diǎn)函數(shù)。
//pNotepad:就是CCNotepad的主界面指針
//strFileName:當(dāng)前插件DLL的全路徑,如果不關(guān)心,則可以不使用
//getCurEdit:從NDD主程序傳遞過(guò)來(lái)的仿函數(shù),通過(guò)該函數(shù)獲取當(dāng)前編輯框操作對(duì)象QsciScintilla
//pProcData:如果pProcData->m_menuType = 0 ,則該指針為空;如果pProcData->m_menuType = 1,則該指針有值。目前需要關(guān)心s_procData.m_rootMenu
//開(kāi)發(fā)者可以在該菜單下面,自行創(chuàng)建二級(jí)菜單
int NDD_PROC_MAIN(QWidget* pNotepad, const QString &strFileName, std::function<QsciScintilla*()>getCurEdit, NDD_PROC_DATA* pProcData)
{
	QsciScintilla* pEdit = getCurEdit();
	if (pEdit == nullptr)
	{
		return -1;
	}
 
	//務(wù)必拷貝一份pProcData,在外面會(huì)釋放。
	if (pProcData != nullptr)
	{
		s_procData = *pProcData;
	}
 
	s_pMainNotepad = pNotepad;
	s_getCurEdit = getCurEdit;
 
	//如果pProcData->m_menuType = 1;是自己要?jiǎng)?chuàng)建二級(jí)菜單的場(chǎng)景。則通過(guò)s_procData.m_rootMenu 獲取該插件的菜單根節(jié)點(diǎn)。
	//插件開(kāi)發(fā)者自行在s_procData.m_rootMenu下添加新的二級(jí)菜單項(xiàng)目
    //QMenu* menu = s_procData.m_rootMenu;
    if (!nddMyPlugin)
    {
        nddMyPlugin = new NDDMyPlugin(s_pMainNotepad, strFileName, nullptr, s_pMainNotepad);
 
        nddMyPlugin->getViewMenu(s_procData.m_rootMenu);
 
        nddMyPlugin->setScintilla(s_getCurEdit);
    }
 
	return 0;
}

附cmake

cmake_minimum_required(VERSION 3.16)
project(helloworld)
 
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
 
set(CMAKE_PREFIX_PATH "D:/Qt5.12.11/Qt5.12.11/5.12.11/msvc2015_64/lib/cmake")
 
find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns)
 
add_definitions(-D_UNICODE -DUNICODE)
 
 
file(GLOB UI_SRC ${PROJECT_SOURCE_DIR}/*.ui)
file(GLOB SRC ${PROJECT_SOURCE_DIR}/*.cpp)
file(GLOB MOC_HEADER ${PROJECT_SOURCE_DIR}/*.h)
# add_executable(${PROJECT_NAME} ${IS_WIN} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc)
#link_directories(
#        ${CMAKE_CURRENT_SOURCE_DIR}/
#)
find_library(QSCINT_LIB qmyedit_qt5 PATH ${CMAKE_CURRENT_SOURCE_DIR}/)
 
add_library(${PROJECT_NAME} SHARED ${SRC} ${UI_SRC} ${MOC_HEADER})
 
target_include_directories(${PROJECT_NAME} PRIVATE
${PROJECT_SOURCE_DIR}
 
${PROJECT_SOURCE_DIR}/../../include
${PROJECT_SOURCE_DIR}/../../qscint/src
${PROJECT_SOURCE_DIR}/../../qscint/src/Qsci
${PROJECT_SOURCE_DIR}/../../qscint/scintilla/src
${PROJECT_SOURCE_DIR}/../../qscint/scintilla/include
${PROJECT_SOURCE_DIR}/../../qscint/scintilla/lexlib
${PROJECT_SOURCE_DIR}/../../qscint/scintilla/boostregex
)
 
 
#set(QS_CINT_LIB ${CMAKE_CURRENT_SOURCE_DIR}/qmyedit_qt5.lib)
 
#target_link_libraries(${PROJECT_NAME} PRIVATE
#        debug qmyedit_qt5_d
#        optimized qmyedit_qt5)
 
target_link_libraries(${PROJECT_NAME} PRIVATE ${QSCINT_LIB} Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network  Qt5::PrintSupport Qt5::XmlPatterns)

其他資源

cmake核心知識(shí)點(diǎn)整理

Cmake 鏈接外部庫(kù)

QT知識(shí)點(diǎn)總結(jié)(三)

【Qt】 error: LNK1107: 文件無(wú)效或損壞: 無(wú)法在 0x310 處讀取

到此這篇關(guān)于notepad介紹及插件cmake編譯過(guò)程(替代notepad++)的文章就介紹到這了,更多相關(guān)notepad插件cmake內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言編程PAT乙級(jí)學(xué)習(xí)筆記示例分享

    C語(yǔ)言編程PAT乙級(jí)學(xué)習(xí)筆記示例分享

    這篇文章主要為大家介紹了C語(yǔ)言編程PAT乙級(jí)學(xué)習(xí)筆記實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • OpenCV外接USB攝像頭的方法

    OpenCV外接USB攝像頭的方法

    這篇文章主要為大家詳細(xì)介紹了OpenCV外接USB攝像頭的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 高效實(shí)現(xiàn)整型數(shù)字轉(zhuǎn)字符串int2str的方法

    高效實(shí)現(xiàn)整型數(shù)字轉(zhuǎn)字符串int2str的方法

    下面小編就為大家?guī)?lái)一篇高效實(shí)現(xiàn)整型數(shù)字轉(zhuǎn)字符串int2str的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • C++面向?qū)ο笾鄳B(tài)的實(shí)現(xiàn)和應(yīng)用詳解

    C++面向?qū)ο笾鄳B(tài)的實(shí)現(xiàn)和應(yīng)用詳解

    相信大家都知道面向?qū)ο蟮娜筇匦允欠庋b,繼承和多態(tài),下面這篇文章主要給大家介紹了關(guān)于C++面向?qū)ο笾鄳B(tài)的實(shí)現(xiàn)和應(yīng)用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-09-09
  • C++實(shí)現(xiàn)LeetCode(136.單獨(dú)的數(shù)字)

    C++實(shí)現(xiàn)LeetCode(136.單獨(dú)的數(shù)字)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(136.單獨(dú)的數(shù)字),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • QT中在QLabel顯示圖片并且利用鼠標(biāo)點(diǎn)擊畫(huà)線問(wèn)題

    QT中在QLabel顯示圖片并且利用鼠標(biāo)點(diǎn)擊畫(huà)線問(wèn)題

    這篇文章主要介紹了QT中在QLabel顯示圖片并且利用鼠標(biāo)點(diǎn)擊畫(huà)線問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++設(shè)計(jì)模式中控制反轉(zhuǎn)與依賴注入淺析

    C++設(shè)計(jì)模式中控制反轉(zhuǎn)與依賴注入淺析

    這篇文章主要介紹了C++設(shè)計(jì)模式中控制反轉(zhuǎn)與依賴注入,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • C++內(nèi)存模型與名稱空間概念講解

    C++內(nèi)存模型與名稱空間概念講解

    這篇文章主要介紹了C++內(nèi)存模型與名稱空間,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • visual studio 2022中的scanf問(wèn)題解決

    visual studio 2022中的scanf問(wèn)題解決

    昨天在使用Visual Studio 2022編寫(xiě)C語(yǔ)言程序時(shí)遇到了scanf問(wèn)題,對(duì)于vs的編譯器來(lái)說(shuō)scanf是不安全的,編譯器通過(guò)不了scanf,本文就來(lái)介紹一下解決方法,感興趣的可以了解一下
    2023-12-12
  • C++中不得不說(shuō)的map容器

    C++中不得不說(shuō)的map容器

    大家好,本篇文章主要講的是C++中不得不說(shuō)的map容器,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02

最新評(píng)論

高邮市| 郧西县| 麦盖提县| 和硕县| 合肥市| 鸡东县| 图木舒克市| 宜章县| 天长市| 炉霍县| 始兴县| 于田县| 建宁县| 应城市| 大连市| 永新县| 沁水县| 金川县| 卢龙县| 昌平区| 本溪| 富源县| 翁牛特旗| 壶关县| 巴马| 麦盖提县| 甘孜| 镇巴县| 漠河县| 碌曲县| 基隆市| 同德县| 陆川县| 海阳市| 交口县| 紫阳县| 宣汉县| 曲阳县| 乐昌市| 阜康市| 社旗县|