diff --git a/CMakeLists.txt b/CMakeLists.txt index ec442ce..e644e27 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,8 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) -find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns) +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport Xml Core5Compat) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport Xml Core5Compat) # qscint 关键依赖库 add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint) @@ -54,7 +55,17 @@ ${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) +target_link_libraries(${PROJECT_NAME} + qscint + Qt${QT_VERSION_MAJOR}::Core + Qt${QT_VERSION_MAJOR}::Gui + Qt${QT_VERSION_MAJOR}::Widgets + Qt${QT_VERSION_MAJOR}::Concurrent + Qt${QT_VERSION_MAJOR}::Network + Qt${QT_VERSION_MAJOR}::PrintSupport + Qt${QT_VERSION_MAJOR}::Xml + Qt${QT_VERSION_MAJOR}::Core5Compat +) # set(PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}/bin") # set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) diff --git a/src/CmpareMode.cpp b/src/CmpareMode.cpp index f0618bd..0202f39 100755 --- a/src/CmpareMode.cpp +++ b/src/CmpareMode.cpp @@ -281,7 +281,7 @@ quint32 CmpareMode::readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fi else if (mode == 2) { QString temp = lineInfo.unicodeStr; - md4.addData(temp.replace(QRegExp("\\s"), QString("")).toUtf8()); + md4.addData(temp.replace(QRegularExpression("\\s"), QString("")).toUtf8()); } }; @@ -529,7 +529,7 @@ CODE_ID CmpareMode::readLineFromFile(uchar* m_fileFpr, const int fileLength, con else if (mode == 2) { QString temp = lineInfo.unicodeStr; - md4.addData(temp.replace(QRegExp("\\s"), QString("")).toUtf8()); + md4.addData(temp.replace(QRegularExpression("\\s"), QString("")).toUtf8()); } }; diff --git a/src/batchfindreplace.cpp b/src/batchfindreplace.cpp index 9dabbfc..8929a35 100755 --- a/src/batchfindreplace.cpp +++ b/src/batchfindreplace.cpp @@ -1,4 +1,4 @@ -#include "batchfindreplace.h" +#include "batchfindreplace.h" #include "scintillaeditview.h" #include "ccnotepad.h" #include "progresswin.h" @@ -98,7 +98,7 @@ void BatchFindReplace::appendToFindReplaceTable(QStringList& findKeyword) bool BatchFindReplace::tranInputKeyword(QString& findKeyWord, QStringList& outputKeyWordList) { //把空白字符,空格或者\t \r\n 等字符进行替换为空格 - QRegExp re("\\s"); + QRegularExpression re("\\s"); findKeyWord.replace(re, QString(" ")); //再进行空格分隔处理 @@ -266,7 +266,9 @@ void BatchFindReplace::on_export() if (!fileName.isEmpty()) { QSettings setting(fileName, QSettings::IniFormat); - setting.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + setting->setIniCodec("UTF-8"); +#endif int rowNums = ui.findReplaceTable->rowCount(); @@ -312,7 +314,9 @@ void BatchFindReplace::on_import() QFileInfo fi(fileNameList[0]); QSettings setting(fi.filePath(), QSettings::IniFormat); - setting.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + setting->setIniCodec("UTF-8"); +#endif ui.findKeywordEdit->setPlainText(setting.value("find").toStringList().join(" ")); ui.replaceKeywordEdit->setPlainText(setting.value("replace").toStringList().join(" ")); diff --git a/src/cceditor/ccnotepad.cpp b/src/cceditor/ccnotepad.cpp index 18d491f..92dd5f1 100755 --- a/src/cceditor/ccnotepad.cpp +++ b/src/cceditor/ccnotepad.cpp @@ -53,9 +53,11 @@ #include #include #ifdef Q_OS_WIN +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) #include #include #endif +#endif #include #include #include @@ -535,7 +537,9 @@ void initFileTypeLangMap() //把新语言tagName,和关联ext单独存放起来ext_tag.ini。只读取一个文件就能获取所有,避免遍历慢 QString extsFile = QString("notepad/userlang/ext_tag");//ext_tag是存在所有tag ext的文件 QSettings qs(QSettings::IniFormat, QSettings::UserScope, extsFile); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif QStringList keys = qs.allKeys(); //LangType lexId = L_USER_TXT; @@ -4730,7 +4734,7 @@ void CCNotePad::initFileListDockWin() } }); m_dockFileListWin->setAttribute(Qt::WA_DeleteOnClose); - m_dockFileListWin->layout()->setMargin(0); + //m_dockFileListWin->layout()->setMargin(0); m_dockFileListWin->layout()->setSpacing(0); //暂时不提供关闭,因为关闭后需要同步菜单的check状态 @@ -5149,8 +5153,8 @@ void CCNotePad::saveTabEdit(int tabIndex) if (pEdit != nullptr) { - //如果是新建的文件,则弹出保存对话框,进行保存 - if (pEdit->property(Edit_File_New) >= 0) + //如果是新建的文件,则弹出保存对话框,进行保存 + if (pEdit->property(Edit_File_New).toInt() >= 0) { QString filter("Text files (*.txt);;XML files (*.xml);;h files (*.h);;cpp file(*.cpp);;All types(*.*)"); QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), QString(), filter); @@ -5317,7 +5321,7 @@ void CCNotePad::slot_actionSaveAsFile_toggle(bool /*checked*/) if (pEdit != nullptr) { //如果是新建的文件,则弹出保存对话框,进行保存 - if (pEdit->property(Edit_File_New) >= 0) + if (pEdit->property(Edit_File_New).toInt() >= 0) { QString filter("Text files (*.txt);;XML files (*.xml);;h files (*.h);;cpp file(*.cpp);;All types(*.*)"); QString fileName = QFileDialog::getSaveFileName(this, tr("Save File As ..."),QString(), filter); @@ -5619,7 +5623,7 @@ void CCNotePad::saveTempFile(ScintillaEditView* pEdit,int index, QSettings& qs) //把文件记录到qs中去 //index一定不能重复。n表示新建 //如果是新建的文件 - if (pEdit->property(Edit_File_New) >= 0) + if (pEdit->property(Edit_File_New).toInt() >= 0) { //不再保存新建的非脏文件。因为一定是空的,意义不大 //qs.setValue(QString("%1").arg(index), QString("%1|1").arg(fileName)); @@ -5639,7 +5643,7 @@ void CCNotePad::saveTempFile(ScintillaEditView* pEdit,int index, QSettings& qs) } //如果是新建的文件 - if (pEdit->property(Edit_File_New) >= 0) + if (pEdit->property(Edit_File_New).toInt() >= 0) { QString qsSavePath = qs.fileName(); @@ -5771,7 +5775,9 @@ void CCNotePad::closeAllFileStatic() { QString tempFileList = QString("notepad/temp/list"); QSettings qs(QSettings::IniFormat, QSettings::UserScope, tempFileList); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif QString qsSavePath = qs.fileName(); QFileInfo fi(qsSavePath); QDir saveDir = fi.dir(); @@ -6312,7 +6318,9 @@ int CCNotePad::initFindWindow(FindTabIndex type) //从历史查找记录文件中加载 QString searchHistory = QString("notepad/searchHistory");//历史查找记录 QSettings qs(QSettings::IniFormat, QSettings::UserScope, searchHistory); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif if (qs.contains("keys")) { @@ -6412,7 +6420,9 @@ void CCNotePad::slot_saveSearchHistory() //从历史查找记录文件中加载 QString searchHistory = QString("notepad/searchHistory");//历史查找记录 QSettings qs(QSettings::IniFormat, QSettings::UserScope, searchHistory); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif if (s_findHistroy.count() > 15) { @@ -6639,7 +6649,7 @@ void CCNotePad::initFindResultDockWin() m_dockSelectTreeWin = new QDockWidget(tr("Find result"), this); connect(m_dockSelectTreeWin, &QDockWidget::dockLocationChanged, this, &CCNotePad::slot_findResultPosChangeed); - m_dockSelectTreeWin->layout()->setMargin(0); + //m_dockSelectTreeWin->layout()->setMargin(0); m_dockSelectTreeWin->layout()->setSpacing(0); //暂时不提供关闭,因为关闭后需要同步菜单的check状态 @@ -7561,7 +7571,7 @@ bool CCNotePad::nativeOpenfile(QString openFilePath) this->activateWindow(); return true; } -bool CCNotePad::nativeEvent(const QByteArray & eventType, void * message, long * result) +bool CCNotePad::nativeEvent(const QByteArray & eventType, void * message, qintptr * result) { MSG *param = static_cast(message); @@ -8111,7 +8121,9 @@ int CCNotePad::restoreLastFiles() QString tempFileList = QString("notepad/temp/list"); QSettings qs(QSettings::IniFormat, QSettings::UserScope, tempFileList); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif QStringList fileList = qs.allKeys(); //从小到大排序一下。这里是按照ASCII排序,不得行。 diff --git a/src/cceditor/ccnotepad.h b/src/cceditor/ccnotepad.h index 84ab6e6..123568a 100755 --- a/src/cceditor/ccnotepad.h +++ b/src/cceditor/ccnotepad.h @@ -196,7 +196,7 @@ protected: void dropEvent(QDropEvent* e) override; bool eventFilter(QObject *watched, QEvent *event)override; #ifdef Q_OS_WIN - bool nativeEvent(const QByteArray &eventType, void *message, long *result) override; + bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result) override; bool nativeOpenfile(QString openFilePath); #endif #ifdef uos diff --git a/src/draglineedit.cpp b/src/draglineedit.cpp index a5e35ba..12abd82 100755 --- a/src/draglineedit.cpp +++ b/src/draglineedit.cpp @@ -1,9 +1,10 @@ -#include "draglineedit.h" +#include "draglineedit.h" +#include DragLineEdit::DragLineEdit(QWidget *parent) - : QLineEdit(parent) + : QLineEdit(parent) { - setAcceptDrops(true); + setAcceptDrops(true); } DragLineEdit::~DragLineEdit() @@ -28,25 +29,25 @@ void DragLineEdit::dragMoveEvent(QDragMoveEvent* ) void DragLineEdit::dropEvent(QDropEvent* e) { - QList urls = e->mimeData()->urls(); - if (urls.isEmpty()) - return; + QList urls = e->mimeData()->urls(); + if (urls.isEmpty()) + return; - QString fileName = urls.first().toLocalFile(); + QString fileName = urls.first().toLocalFile(); - if (fileName.isEmpty()) - { - return; - } + if (fileName.isEmpty()) + { + return; + } - if (!QFile::exists(fileName)) - { - return; - } + if (!QFile::exists(fileName)) + { + return; + } - this->setText(fileName); + this->setText(fileName); - e->accept(); + e->accept(); - emit this->returnPressed(); + emit this->returnPressed(); } diff --git a/src/encodeconvert.cpp b/src/encodeconvert.cpp index c17022e..106eaea 100755 --- a/src/encodeconvert.cpp +++ b/src/encodeconvert.cpp @@ -11,6 +11,7 @@ #include #include #include +#include const int ITEM_CODE = Qt::UserRole + 1; diff --git a/src/findresultwin.cpp b/src/findresultwin.cpp index 228cba6..534c3ea 100755 --- a/src/findresultwin.cpp +++ b/src/findresultwin.cpp @@ -208,12 +208,12 @@ void FindResultWin::slot_selectAll() //遍历下面的子节点 int i = 0; QModelIndex childMi; - childMi = sectionItem.child(i, 0); + childMi = sectionItem.model()->index(i, 0); while (childMi.isValid()) { ++i; ui.resultTreeView->selectionModel()->select(childMi, QItemSelectionModel::Select); - childMi = sectionItem.child(i, 0); + childMi = sectionItem.model()->index(i, 0); } return i+1; }; @@ -226,12 +226,12 @@ void FindResultWin::slot_selectAll() //遍历根节点下面每一个section { int i = 0; - QModelIndex section = rootItem.child(i, 0); + QModelIndex section = rootItem.model()->index(i, 0); while (section.isValid() && !section.data(ResultItemEditor).isNull()) { ++i; selectCount += selectSection(section); - section = firstRootItem.child(i, 0); + section = firstRootItem.model()->index(i, 0); } } @@ -255,12 +255,12 @@ void FindResultWin::slot_selectSection() //遍历下面的子节点 int i = 0; QModelIndex childMi; - childMi = sectionItem.child(i, 0); + childMi = sectionItem.model()->index(i, 0); while (childMi.isValid()) { ++i; ui.resultTreeView->selectionModel()->select(childMi, QItemSelectionModel::Select); - childMi = sectionItem.child(i, 0); + childMi = sectionItem.model()->index(i, 0); } return i+1; }; @@ -453,7 +453,7 @@ QString FindResultWin::highlightFindText(FindRecord& record) head = QString("%1").arg(head); src = QString("%1").arg(QString(utf8bytes.mid(targetStart, targetLens)).toHtmlEscaped()); tail = QString(utf8bytes.mid(tailStart)); - if (tail > MAX_TAIL_LENGTH) + if (tail.size() > MAX_TAIL_LENGTH) { tail = (tail.mid(0, MAX_TAIL_LENGTH) + "...").toHtmlEscaped(); } @@ -488,7 +488,7 @@ QString FindResultWin::highlightFindText(FindRecord& record) src = QString("%1").arg(QString(utf8bytes.mid(targetStart, targetLens)).toHtmlEscaped()); QString tailContens = QString(utf8bytes.mid(tailStart)); - if (tailContens > MAX_TAIL_LENGTH) + if (tailContens.size() > MAX_TAIL_LENGTH) { tailContens = (tailContens.mid(0, MAX_TAIL_LENGTH) + "...").toHtmlEscaped(); } diff --git a/src/findwin.cpp b/src/findwin.cpp index 55d97f6..49bca5a 100755 --- a/src/findwin.cpp +++ b/src/findwin.cpp @@ -620,9 +620,9 @@ bool readBase(const QChar * str, int * value, int base, int size) { current = str[i]; if (current >= 'A') - { - current = current.digitValue() & 0xdf; - current = current.digitValue() - ('A' - '0' - 10); + { + current = QChar(current.digitValue() & 0xdf); + current = QChar(current.digitValue() - ('A' - '0' - 10)); } else if (current > '9') return false; diff --git a/src/langextset.cpp b/src/langextset.cpp index a1db834..cd7b295 100755 --- a/src/langextset.cpp +++ b/src/langextset.cpp @@ -7,6 +7,7 @@ #include #include #include +#include int ITEM_CHANGED = Qt::UserRole; int ITEM_LEX_ID = Qt::UserRole + 1; //对应的语法lexer的 ID @@ -112,8 +113,10 @@ void LangExtSet::slot_save() int rowNums = ui.langTableWidget->rowCount(); QString userLangFile = QString("notepad/tag_ext"); - QSettings qs(QSettings::IniFormat, QSettings::UserScope, userLangFile); - qs.setIniCodec("UTF-8"); + QSettings qs(QSettings::IniFormat, QSettings::UserScope, userLangFile); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif for (int i = 0; i < rowNums; ++i) { @@ -180,7 +183,9 @@ void LangExtSet::loadExtRelevanceToMagr() { QString userLangFile = QString("notepad/tag_ext");//自定义语言中不能有.字符,否则可能有错,后续要检查 QSettings qs(QSettings::IniFormat, QSettings::UserScope, userLangFile); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif if (!QFile::exists(qs.fileName())) { diff --git a/src/langstyledefine.cpp b/src/langstyledefine.cpp index 3945159..da4aa44 100755 --- a/src/langstyledefine.cpp +++ b/src/langstyledefine.cpp @@ -30,8 +30,10 @@ bool LangStyleDefine::readLangSetFile(QString langName, bool isLoadToUI) { QString userLangFile = QString("notepad/userlang/%1").arg(langName);//自定义语言中不能有.字符,否则可能有错,后续要检查 QSettings qs(QSettings::IniFormat, QSettings::UserScope, userLangFile); - qs.setIniCodec("UTF-8"); - qDebug() << qs.fileName(); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif + //qDebug() << qs.fileName(); if (!qs.contains("mz")) { @@ -160,7 +162,9 @@ void LangStyleDefine::slot_save() //把新语言tagName,和关联ext单独存放起来。后面只读取一个文件就能获取所有,避免遍历慢 QString extsFile = QString("notepad/userlang/ext_tag");//ext_tag是存在所有tag ext的文件 QSettings qs(QSettings::IniFormat, QSettings::UserScope, extsFile); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif QStringList extList = ui.extNameLe->text().trimmed().split(" "); extList.append(QString::number(motherLangs)); //最后一个是mother lexer @@ -201,7 +205,9 @@ void LangStyleDefine::slot_delete() { QString userLangFile = QString("notepad/userlang/%1").arg(name);//自定义语言中不能有.字符,否则可能有错,后续要检查 QSettings qs(QSettings::IniFormat, QSettings::UserScope, userLangFile); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif //删除userlang下面的tag.ini QFile::remove(qs.fileName()); @@ -211,7 +217,9 @@ void LangStyleDefine::slot_delete() //把新语言在ext_tag中的关联文件记录也删除 QString extsFile = QString("notepad/userlang/ext_tag");//ext_tag是存在所有tag ext的文件 QSettings qs(QSettings::IniFormat, QSettings::UserScope, extsFile); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif QStringList extList = qs.value(name).toStringList(); //更新当前ExtLexerManager::getInstance()。如果不更新,就要重启软件才能生效 diff --git a/src/main.cpp b/src/main.cpp index 5d94509..f0e91f4 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,4 @@ -#include "ccnotepad.h" +#include "ccnotepad.h" #include "nddsetting.h" #include "styleset.h" @@ -23,11 +23,20 @@ #ifdef Q_OS_WIN #pragma comment(lib, "user32.lib") +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) #if _DEBUG #pragma comment(lib, "qmyedit_qt5d.lib") #else #pragma comment(lib, "qmyedit_qt5.lib") #endif +#else +#if _DEBUG +#pragma comment(lib, "qmyedit_qt6d.lib") +#else +#pragma comment(lib, "qmyedit_qt6.lib") +#endif +#endif + #include const ULONG_PTR CUSTOM_TYPE = 10000; const ULONG_PTR OPEN_NOTEPAD_TYPE = 10001; diff --git a/src/nddsetting.cpp b/src/nddsetting.cpp index 9fdc03d..5a1f644 100755 --- a/src/nddsetting.cpp +++ b/src/nddsetting.cpp @@ -25,20 +25,20 @@ bool NddSetting::checkNoExistAdd(QString key, QVariant& value) { s_nddSet->setValue(key, value); - if (!s_isContentChanged) - { - s_isContentChanged = true; - } - return false; - } - return true; + if (!s_isContentChanged) + { + s_isContentChanged = true; + } + return false; + } + return true; } //20220402这里隐含了一个前置条件:数据库句柄是在主线程创建的,最好不要在子线程中调用。 //避免因为跨线程访问和多线程冲突访问引发的闪退问题。所以最好配置文件的读写都在主线程中进行 void NddSetting::init() { - ++s_reference; + ++s_reference; //如果已经初始化过了,则直接返回 if (s_isExistDb) @@ -49,9 +49,11 @@ void NddSetting::init() QSettings qs(QSettings::IniFormat, QSettings::UserScope, settingDir); QString qsSetPath = qs.fileName(); - s_nddSet = new QSettings(QSettings::IniFormat, QSettings::UserScope, settingDir); - s_nddSet->setIniCodec("UTF-8"); - bool initOk = true; + s_nddSet = new QSettings(QSettings::IniFormat, QSettings::UserScope, settingDir); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + s_nddSet->setIniCodec("UTF-8"); +#endif + bool initOk = true; auto initNddSet = []() { QString key = "signdate"; @@ -60,21 +62,21 @@ void NddSetting::init() //直接写一个过去的时间,让第一次运行,总是要签到 addKeyValueToSets(key, "2022/2/20"); - QString str; + QString str; //tab的长度,默认为4 addKeyValueToNumSets("tablens", 4); //space replace tab空格替换tab,默认0, 1为true,0为false addKeyValueToNumSets("tabnouse", 0); - addKeyValueToSets("mac", "0"); - addKeyValueToNumSets("padtimes", 0); - addKeyValueToNumSets("serverip", 0); + addKeyValueToSets("mac", "0"); + addKeyValueToNumSets("padtimes", 0); + addKeyValueToNumSets("serverip", 0); //是否高亮不同处背景 addKeyValueToNumSets("hexhigh", 1); - addKeyValueToNumSets(VERSION, version_num); + addKeyValueToNumSets(VERSION, version_num); //皮肤id addKeyValueToNumSets(SKIN_KEY, 0); @@ -94,18 +96,18 @@ void NddSetting::init() //最大文本文件的门限。默认100M.(50-300) addKeyValueToNumSets(MAX_BIG_TEXT, 100); - addKeyValueToSets(SOFT_KEY, "0"); + addKeyValueToSets(SOFT_KEY, "0"); - addKeyValueToSets(RESTORE_CLOSE_FILE, "1"); + addKeyValueToSets(RESTORE_CLOSE_FILE, "1"); - //0 24 1 36 2 48 - addKeyValueToNumSets(ICON_SIZE, 1); + //0 24 1 36 2 48 + addKeyValueToNumSets(ICON_SIZE, 1); - addKeyValueToNumSets(ZOOMVALUE, 100); - - addKeyValueToNumSets(FINDRESULTPOS, Qt::BottomDockWidgetArea); + addKeyValueToNumSets(ZOOMVALUE, 100); - addKeyValueToNumSets(FILELISTPOS, Qt::LeftDockWidgetArea); + addKeyValueToNumSets(FINDRESULTPOS, Qt::BottomDockWidgetArea); + + addKeyValueToNumSets(FILELISTPOS, Qt::LeftDockWidgetArea); //默认0不显示 addKeyValueToNumSets(FILELISTSHOW, 0); @@ -152,86 +154,86 @@ void NddSetting::init() checkNoExistAdd(SKIN_KEY, v); } - { - QVariant langs(0); - checkNoExistAdd(LANGS_KEY, langs); - } + { + QVariant langs(0); + checkNoExistAdd(LANGS_KEY, langs); + } - { - QVariant v(0); - checkNoExistAdd(AUTOWARP_KEY, v); - } + { + QVariant v(0); + checkNoExistAdd(AUTOWARP_KEY, v); + } - { - QVariant v(0); - checkNoExistAdd(INDENT_KEY, v); - } + { + QVariant v(0); + checkNoExistAdd(INDENT_KEY, v); + } - { - QVariant v(0); - checkNoExistAdd(SHOWSPACE_KEY, v); - } + { + QVariant v(0); + checkNoExistAdd(SHOWSPACE_KEY, v); + } - - { - QVariant v(100); - checkNoExistAdd(MAX_BIG_TEXT, v); - } - { - QVariant v(0); - checkNoExistAdd(SOFT_STATUS, v); - } + { + QVariant v(100); + checkNoExistAdd(MAX_BIG_TEXT, v); + } - { - QVariant v("0"); - checkNoExistAdd(SOFT_KEY, v); - } + { + QVariant v(0); + checkNoExistAdd(SOFT_STATUS, v); + } - { - QVariant v(1); - checkNoExistAdd(RESTORE_CLOSE_FILE, v); - } + { + QVariant v("0"); + checkNoExistAdd(SOFT_KEY, v); + } - { - QVariant v(1); - checkNoExistAdd(ICON_SIZE, v); - } + { + QVariant v(1); + checkNoExistAdd(RESTORE_CLOSE_FILE, v); + } - { - QVariant v(100); - checkNoExistAdd(ZOOMVALUE, v); - } - { - QVariant v(Qt::BottomDockWidgetArea); - checkNoExistAdd(FINDRESULTPOS, v); - } + { + QVariant v(1); + checkNoExistAdd(ICON_SIZE, v); + } - { - QVariant v(Qt::LeftDockWidgetArea); - checkNoExistAdd(FILELISTPOS, v); - } - { - QVariant v(0); - checkNoExistAdd(FILELISTSHOW, v); - } - { - QVariant v(1); - checkNoExistAdd(TOOLBARSHOW, v); - } - { - QVariant v(0); - checkNoExistAdd(SHOWWEBADDR, v); - } - { - QVariant v(14); - checkNoExistAdd(FIND_RESULT_FONT_SIZE, v); - } - } while (false); + { + QVariant v(100); + checkNoExistAdd(ZOOMVALUE, v); + } + { + QVariant v(Qt::BottomDockWidgetArea); + checkNoExistAdd(FINDRESULTPOS, v); + } - } + { + QVariant v(Qt::LeftDockWidgetArea); + checkNoExistAdd(FILELISTPOS, v); + } + { + QVariant v(0); + checkNoExistAdd(FILELISTSHOW, v); + } + { + QVariant v(1); + checkNoExistAdd(TOOLBARSHOW, v); + } + { + QVariant v(0); + checkNoExistAdd(SHOWWEBADDR, v); + } + { + QVariant v(14); + checkNoExistAdd(FIND_RESULT_FONT_SIZE, v); + } + } while (false); - s_isExistDb = initOk; + } + + s_isExistDb = initOk; } @@ -240,65 +242,65 @@ void NddSetting::init() //写一个总的获取配置的接口,避免以后每个字段都需要写一个读写接口 QString NddSetting::getKeyValueFromSets(QString key) { - return s_nddSet->value(key,"").toString(); + return s_nddSet->value(key,"").toString(); } bool NddSetting::updataKeyValueFromSets(QString key, QString value) { - s_nddSet->setValue(key,value); - s_isContentChanged = true; - return true; + s_nddSet->setValue(key,value); + s_isContentChanged = true; + return true; } //写一个总的获取配置的接口,避免以后每个字段都需要写一个读写接口 QByteArray NddSetting::getKeyByteArrayValue(QString key) { - return s_nddSet->value(key, "").toByteArray(); + return s_nddSet->value(key, "").toByteArray(); } void NddSetting::updataKeyByteArrayValue(QString key, QByteArray& value) { - s_nddSet->setValue(key, QVariant(value)); - s_isContentChanged = true; + s_nddSet->setValue(key, QVariant(value)); + s_isContentChanged = true; } //第一次加一条记录,用于初始化 void NddSetting::addKeyValueToSets(QString key, QString value) { - s_nddSet->setValue(key, QVariant(value)); + s_nddSet->setValue(key, QVariant(value)); } //写一个总的获取配置的接口,避免以后每个字段都需要写一个读写接口.0做默认值,外部最好不用0做初始化值 int NddSetting::getKeyValueFromNumSets(const QString key) { - QVariant v = s_nddSet->value(key, QVariant(0)); - return v.toInt(); + QVariant v = s_nddSet->value(key, QVariant(0)); + return v.toInt(); } bool NddSetting::updataKeyValueFromNumSets(const QString key, int value) { - s_nddSet->setValue(key, QVariant(value)); - return true; + s_nddSet->setValue(key, QVariant(value)); + return true; } //第一次加一条记录,用于初始化 void NddSetting::addKeyValueToNumSets(QString key, int value) { - s_nddSet->setValue(key, QVariant(value)); + s_nddSet->setValue(key, QVariant(value)); } void NddSetting::close() { - if (s_reference > 0) - { - --s_reference; + if (s_reference > 0) + { + --s_reference; - if (s_reference == 0) - { - s_isExistDb = false; + if (s_reference == 0) + { + s_isExistDb = false; //做一次真正的保存 if (s_isContentChanged) @@ -322,25 +324,27 @@ void NddSetting::close() //子窗口的位置,单独放在一个winpos.ini文件中,而且启动程序时,不需要读取,可避免启动时拖慢速度 QByteArray NddSetting::getWinPos(QString key) { - winPosInit(); - return s_winPosSet->value(key, "").toByteArray(); + winPosInit(); + return s_winPosSet->value(key, "").toByteArray(); } void NddSetting::updataWinPos(QString key, QByteArray& value) { - winPosInit(); - s_winPosSet->setValue(key, QVariant(value)); + winPosInit(); + s_winPosSet->setValue(key, QVariant(value)); } void NddSetting::winPosInit() { - if (s_winPosSet == nullptr) - { - QString settingDir = QString("notepad/delayset"); - QSettings qs(QSettings::IniFormat, QSettings::UserScope, settingDir); - QString qsSetPath = qs.fileName(); + if (s_winPosSet == nullptr) + { + QString settingDir = QString("notepad/delayset"); + QSettings qs(QSettings::IniFormat, QSettings::UserScope, settingDir); + QString qsSetPath = qs.fileName(); - s_winPosSet = new QSettings(QSettings::IniFormat, QSettings::UserScope, settingDir); - s_winPosSet->setIniCodec("UTF-8"); - } + s_winPosSet = new QSettings(QSettings::IniFormat, QSettings::UserScope, settingDir); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + s_winPosSet->setIniCodec("UTF-8"); +#endif + } } diff --git a/src/plugin/helloworld/CMakeLists.txt b/src/plugin/helloworld/CMakeLists.txt index f4acbcd..57b942f 100644 --- a/src/plugin/helloworld/CMakeLists.txt +++ b/src/plugin/helloworld/CMakeLists.txt @@ -5,7 +5,8 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) -find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns) +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport Xml) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport Xml) add_definitions(-D_UNICODE -DUNICODE) @@ -31,7 +32,15 @@ ${PROJECT_SOURCE_DIR}/../../qscint/scintilla/lexlib ${PROJECT_SOURCE_DIR}/../../qscint/scintilla/boostregex ) -target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport Qt5::XmlPatterns) +target_link_libraries(${PROJECT_NAME} + qscint + Qt${QT_VERSION_MAJOR}::Core + Qt${QT_VERSION_MAJOR}::Gui + Qt${QT_VERSION_MAJOR}::Widgets + Qt${QT_VERSION_MAJOR}::Concurrent + Qt${QT_VERSION_MAJOR}::Network + Qt${QT_VERSION_MAJOR}::PrintSupport + Qt${QT_VERSION_MAJOR}::Xml) # if(NOT DEFINED ${notepad--_BINARY_DIR}) # set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) diff --git a/src/qscint/CMakeLists.txt b/src/qscint/CMakeLists.txt index 5876579..0ed7969 100644 --- a/src/qscint/CMakeLists.txt +++ b/src/qscint/CMakeLists.txt @@ -5,7 +5,8 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) -find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets PrintSupport) +find_package(Qt$ NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Gui Widgets PrintSupport) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets PrintSupport) aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC) aux_source_directory(${PROJECT_SOURCE_DIR}/scintilla/lexers SRC) @@ -35,12 +36,18 @@ ${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) +target_link_libraries(${PROJECT_NAME} + Qt${QT_VERSION_MAJOR}::Core + Qt${QT_VERSION_MAJOR}::Gui + Qt${QT_VERSION_MAJOR}::Widgets + Qt${QT_VERSION_MAJOR}::Concurrent + Qt${QT_VERSION_MAJOR}::Network + Qt${QT_VERSION_MAJOR}::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") + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "qmyedit_qt${QT_VERSION_MAJOR}d") endif() diff --git a/src/qscint/src/qscilexer.cpp b/src/qscint/src/qscilexer.cpp index 070a4a6..8491851 100755 --- a/src/qscint/src/qscilexer.cpp +++ b/src/qscint/src/qscilexer.cpp @@ -1,4 +1,4 @@ -// This module implements the QsciLexer class. +// This module implements the QsciLexer class. // // Copyright (c) 2021 Riverbank Computing Limited // @@ -907,7 +907,9 @@ const char* QsciLexer::getUserDefineKeywords() QString userLangFile = QString("notepad/userlang/%1").arg(m_tagName);//自定义语言中不能有.字符,否则可能有错,后续要检查 QSettings qs(QSettings::IniFormat, QSettings::UserScope, userLangFile); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif if (!qs.contains("mz")) { diff --git a/src/qtlangset.cpp b/src/qtlangset.cpp index 7262853..363595a 100755 --- a/src/qtlangset.cpp +++ b/src/qtlangset.cpp @@ -382,7 +382,7 @@ void QtLangSet::updateAllLangeStyleWithGlobal(GLOBAL_STYLE_SET flag) QsciLexer *pLexer = ScintillaEditView::createLexer(index); if (nullptr != pLexer) { - + switch (flag) { case GLOBAL_FONT: @@ -390,9 +390,9 @@ void QtLangSet::updateAllLangeStyleWithGlobal(GLOBAL_STYLE_SET flag) //非全局修改所有的语法对应样式 if (index != L_GLOBAL) { - for (int i = 0; i <= 255; ++i) - { - if (!pLexer->description(i).isEmpty()) + for (int i = 0; i <= 255; ++i) + { + if (!pLexer->description(i).isEmpty()) { oldfont = pLexer->font(i); oldfont.setFamily(m_curStyleData.font.family()); @@ -423,9 +423,9 @@ void QtLangSet::updateAllLangeStyleWithGlobal(GLOBAL_STYLE_SET flag) //非全局修改所有的语法对应样式 if (index != L_GLOBAL) { - for (int i = 0; i <= 255; ++i) - { - if (!pLexer->description(i).isEmpty()) + for (int i = 0; i <= 255; ++i) + { + if (!pLexer->description(i).isEmpty()) { oldfont = pLexer->font(i); oldfont.setPointSize(m_curStyleData.font.pointSize()); @@ -453,9 +453,9 @@ void QtLangSet::updateAllLangeStyleWithGlobal(GLOBAL_STYLE_SET flag) break; case GLOBAL_FONT_BOLD: { - for (int i = 0; i <= 255; ++i) - { - if (!pLexer->description(i).isEmpty()) + for (int i = 0; i <= 255; ++i) + { + if (!pLexer->description(i).isEmpty()) { oldfont = pLexer->font(i); oldfont.setBold(m_curStyleData.font.bold()); @@ -466,9 +466,9 @@ void QtLangSet::updateAllLangeStyleWithGlobal(GLOBAL_STYLE_SET flag) break; case GLOBAL_FONT_UNDERLINE: { - for (int i = 0; i <= 255; ++i) - { - if (!pLexer->description(i).isEmpty()) + for (int i = 0; i <= 255; ++i) + { + if (!pLexer->description(i).isEmpty()) { oldfont = pLexer->font(i); oldfont.setUnderline(m_curStyleData.font.underline()); @@ -479,9 +479,9 @@ void QtLangSet::updateAllLangeStyleWithGlobal(GLOBAL_STYLE_SET flag) break; case GLOBAL_FONT_ITALIC: { - for (int i = 0; i <= 255; ++i) - { - if (!pLexer->description(i).isEmpty()) + for (int i = 0; i <= 255; ++i) + { + if (!pLexer->description(i).isEmpty()) { oldfont = pLexer->font(i); oldfont.setItalic(m_curStyleData.font.italic()); @@ -504,10 +504,10 @@ void QtLangSet::updateAllLangeStyleWithGlobal(GLOBAL_STYLE_SET flag) break; default: break; - } + } saveLangeSet(pLexer); - } + } delete pLexer; } @@ -558,7 +558,7 @@ void QtLangSet::restoreOriginLangAllStyle() { QFile::remove(qs.fileName()); } - + delete pLexer; pLexer = nullptr; @@ -605,12 +605,12 @@ void QtLangSet::restoreOriginLangOneStyle(GLOBAL_STYLE_SET flag) QsciLexer *pLexer = ScintillaEditView::createLexer(index); QsciLexer *pOriginLexer = ScintillaEditView::createLexer(index,"",true); if (nullptr != pLexer) - { - for (int i = 0; i <= 255; ++i) - { - if (!pLexer->description(i).isEmpty()) - { - + { + for (int i = 0; i <= 255; ++i) + { + if (!pLexer->description(i).isEmpty()) + { + switch (flag) { case GLOBAL_FONT: @@ -666,11 +666,11 @@ void QtLangSet::restoreOriginLangOneStyle(GLOBAL_STYLE_SET flag) break; default: break; - } - } + } + } } saveLangeSet(pLexer); - } + } delete pLexer; delete pOriginLexer; } @@ -826,7 +826,9 @@ bool QtLangSet::readLangSetFile(QString langName,QString &keyword, QString &moth { QString userLangFile = QString("notepad/userlang/%1").arg(langName);//自定义语言中不能有.字符,否则可能有错,后续要检查 QSettings qs(QSettings::IniFormat, QSettings::UserScope, userLangFile); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs.setIniCodec("UTF-8"); +#endif //qDebug() << qs.fileName(); if (!qs.contains("mz")) @@ -954,15 +956,15 @@ void QtLangSet::slot_itemSelect(QListWidgetItem *item) ExtLexerManager::getInstance()->getExtlistByLangTag(langName, extList); ui.extFileType->setText(extList.join(',')); - for (int i = 0; i <= 255; ++i) - { - QString desc = pLexer->description(i); - if (!desc.isEmpty()) - { + for (int i = 0; i <= 255; ++i) + { + QString desc = pLexer->description(i); + if (!desc.isEmpty()) + { QListWidgetItem *itemtemp = new QListWidgetItem(desc); - itemtemp->setData(Qt::UserRole, i); - ui.styleListWidget->addItem(itemtemp); - } + itemtemp->setData(Qt::UserRole, i); + ui.styleListWidget->addItem(itemtemp); + } } } diff --git a/src/scintillaeditview.cpp b/src/scintillaeditview.cpp index 29fcd7c..eab647c 100755 --- a/src/scintillaeditview.cpp +++ b/src/scintillaeditview.cpp @@ -3307,8 +3307,8 @@ bool isUrlQueryDelimiter(QChar const c) void scanToUrlEnd(QString & text, int textLen, int start, int* distance) { - int p = start; - QChar q = 0; + int p = start; + QChar q{0}; enum { sHostAndPath, sQuery, sQueryAfterDelimiter, sQueryQuotes, sQueryAfterQuotes, sFragment } s = sHostAndPath; while (p < textLen) { diff --git a/src/shortcutkeymgr.cpp b/src/shortcutkeymgr.cpp index 7432644..6c63b73 100755 --- a/src/shortcutkeymgr.cpp +++ b/src/shortcutkeymgr.cpp @@ -139,7 +139,9 @@ void ShortcutKeyMgr::loadUserDefSet() { QString userDefFile = QString("notepad/shortcuttab"); QSettings qs(QSettings::IniFormat, QSettings::UserScope, userDefFile); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif QStringList keys = qs.allKeys(); @@ -164,7 +166,9 @@ bool ShortcutKeyMgr::ModifyShortCutKey(QString initTag, QString keySeqStr) { QString userDefFile = QString("notepad/shortcuttab"); QSettings qs(QSettings::IniFormat, QSettings::UserScope, userDefFile); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif if (s_shortcutKeysMap->contains(initTag)) { diff --git a/src/userlexdef.cpp b/src/userlexdef.cpp index a1983a6..b945d31 100755 --- a/src/userlexdef.cpp +++ b/src/userlexdef.cpp @@ -24,7 +24,9 @@ bool UserLexDef::readUserSettings(QString langTagName) QString userLangFile = QString("notepad/userlang/%1").arg(langTagName); QSettings qs(QSettings::IniFormat, QSettings::UserScope, userLangFile); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif if (!qs.contains(QString("mz"))) { @@ -93,7 +95,9 @@ bool UserLexDef::writeUserSettings(QString langTagName) QString userLangFile = QString("notepad/userlang/%1").arg(langTagName); QSettings qs(QSettings::IniFormat, QSettings::UserScope, userLangFile); - qs.setIniCodec("UTF-8"); +#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) + qs->setIniCodec("UTF-8"); +#endif qs.clear(); qs.setValue("mz", langTagName);