From 661e6c4ed45a0a10e97a23715831d0c745de4266 Mon Sep 17 00:00:00 2001 From: taynpg Date: Fri, 8 Mar 2024 11:32:52 +0800 Subject: [PATCH] v1.0.0 --- .clang-format | 17 + .clangd | 12 + .gitignore | 2 + .vscode/qt5.natvis | 814 +++++ .vscode/settings.json | 41 + CMakeLists.txt | 79 + MainWidget.cpp | 35 + MainWidget.h | 20 + MainWidget.ui | 19 + ReadMe.md | 3 + main.cpp | 11 + resource/ico.rc | 1 + resource/icons.ico | Bin 0 -> 114518 bytes resource/index.html | 7083 +++++++++++++++++++++++++++++++++++++++++ source.qrc | 6 + 15 files changed, 8143 insertions(+) create mode 100644 .clang-format create mode 100644 .clangd create mode 100644 .gitignore create mode 100644 .vscode/qt5.natvis create mode 100644 .vscode/settings.json create mode 100644 CMakeLists.txt create mode 100644 MainWidget.cpp create mode 100644 MainWidget.h create mode 100644 MainWidget.ui create mode 100644 ReadMe.md create mode 100644 main.cpp create mode 100644 resource/ico.rc create mode 100644 resource/icons.ico create mode 100644 resource/index.html create mode 100644 source.qrc diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..4ed25d6 --- /dev/null +++ b/.clang-format @@ -0,0 +1,17 @@ +# .clang-format + +# 风格格式化 +BasedOnStyle: Google +# 4 空格缩进 +IndentWidth: 4 +# 连续对齐变量的声明 +AlignConsecutiveDeclarations: true +# 指针左侧对齐 +PointerAlignment: Left +# 访问说明符(public、private等)的偏移 +AccessModifierOffset: -4 +# 大括号 +BreakBeforeBraces: Custom +BraceWrapping: + # 函数定义后面大括号在新行 + AfterFunction: true diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..11d6e06 --- /dev/null +++ b/.clangd @@ -0,0 +1,12 @@ +Hover: + ShowAKA: Yes +Diagnostics: + UnusedIncludes: None # 禁用未使用头文件提示 + Suppress: [ + anon_type_definition, # 禁用匿名的typedef提示 + unused-variable, # 禁用未使用变量提示 + unused-function, # 禁用未使用函数提示 + unused-includes, # 禁用未使用的头文件提示 + ] + ClangTidy: + Remove: misc-unused-alias-decls diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b2c812d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +buil* +cmake-* \ No newline at end of file diff --git a/.vscode/qt5.natvis b/.vscode/qt5.natvis new file mode 100644 index 0000000..7d18567 --- /dev/null +++ b/.vscode/qt5.natvis @@ -0,0 +1,814 @@ + + + + + + + {{{data1,Xb}-{data2,Xb}-{data3,Xb}-{(data4[0]),nvoXb}{(data4[1]),nvoXb}-{(data4[2]),nvoXb}{(data4[3]),nvoXb}{(data4[4]),nvoXb}{(data4[5]),nvoXb}{(data4[6]),nvoXb}{(data4[7]),nvoXb}}} + + + + + {{ x = {xp}, y = {yp} }} + + xp + yp + + + + + {{ x = {x1}, y = {y1}, width = {x2 - x1 + 1}, height = {y2 - y1 + 1} }} + + x1 + y1 + x2 - x1 + 1 + y2 - y1 + 1 + + + + + {{ x = {xp}, y = {yp}, width = {w}, height = {h} }} + + xp + yp + w + h + + + + + + {{ width = {wd}, height = {ht} }} + + wd + ht + + + + + + {{ start point = {pt1}, end point = {pt2} }} + + + {pt1} + + pt1 + + + + {pt2} + + pt2 + + + + + + + + {{ size = {d->size} }} + + d->ref.atomic._q_value + + d->size + (QPoint*)((reinterpret_cast<char*>(d)) + d->offset) + + + + + + {{ size = {d->size} }} + + + d->size > 0 + && ((((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[0]).xp + == (((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[d->size - 1]).xp) + && ((((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[0]).yp + == (((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[d->size - 1]).yp) + + d->ref.atomic._q_value + + d->size + (QPointF*)((reinterpret_cast<char*>(d)) + d->offset) + + + + + + {{ x = {xp}, y = {yp} }} + + xp + yp + + + + + {{ x = {xp}, y = {yp}, z = {zp} }} + + xp + yp + zp + + + + + {{ x = {xp}, y = {yp}, z = {zp}, w = {wp} }} + + xp + yp + zp + wp + + + + + + {{ m11 = {_m11}, m12 = {_m12}, m21 = {_m21}, m22 = {_m22}, ... }} + + + _m11 + _m12 + _m21 + _m22 + _dx + _dy + + + + + + {{ m11 = {m[0][0]}, m12 = {m[1][0]}, m13 = {m[2][0]}, m14 = {m[3][0]}, ... }} + + + m[0][0] + m[1][0] + m[2][0] + m[3][0] + m[0][1] + m[1][1] + m[2][1] + m[3][1] + m[0][2] + m[1][2] + m[2][2] + m[3][2] + m[0][3] + m[1][3] + m[2][3] + m[3][3] + + + + + + {{ horizontal = {static_cast<Policy>(bits.horPolicy)}, vertical = {static_cast<Policy>(bits.verPolicy)}, type = {ControlType(1 << bits.ctype)} }} + + + + QSizePolicy::Policy::{static_cast<Policy>(bits.verPolicy)} + + + QSizePolicy::Policy::{static_cast<Policy>(bits.horPolicy)} + + + QSizePolicy::ControlType::{ControlType(1 << bits.ctype)} + + + + Qt::Vertical (2) + + + Qt::Horizontal (1) + + + static_cast<int>(bits.verStretch) + static_cast<int>(bits.horStretch) + bits.hfw == 1 + bits.wfh == 1 + + + + + {ucs,c} + ucs,c + + ucs > 0xff ? '\0' : char(ucs),c + ucs,c + + + + + {((reinterpret_cast<unsigned short*>(d)) + d->offset / 2),sub} + ((reinterpret_cast<unsigned short*>(d)) + d->offset / 2),sub + + d->size + d->ref.atomic._q_value + + d->size + ((reinterpret_cast<unsigned short*>(d)) + d->offset / 2),c + + + + + + + {m_string,[m_size]} u"" + {offset() + m_position,[m_size]} + + m_position + m_size + + m_size + offset()+m_position + + + + + + {m_data,[m_size]} + m_data,[m_size] + + m_size + + m_size + m_data + + + + + + {((reinterpret_cast<char*>(d)) + d->offset),sb} + ((reinterpret_cast<char*>(d)) + d->offset),sb + + d->size + d->ref.atomic._q_value + + d->size + ((reinterpret_cast<char*>(d)) + d->offset),c + + + + + + + + + + + + + + + + + + + + {scheme()}://{host()}{path()} + {path()} + + scheme() + username() + password() + host() + path() + query() + fragment() + + + + + {{ size = {(d.d->size << 3) - *((reinterpret_cast<char*>(d.d)) + d.d->offset)} }} + + d.d->ref.atomic._q_value + + (d.d->size << 3) - *((reinterpret_cast<char*>(d.d)) + d.d->offset) + + (*(reinterpret_cast<const unsigned char*>((reinterpret_cast<char*>(d.d)) + d.d->offset) + 1 + + ($i >> 3)) & (1 << ($i & 7))) != 0 + + + + + + + + {{ size = {s} }} + + a + + s + ptr + + + + + + {{ julian day = {jd} }} + + + + + {{ millisecond = {mds} }} + {{ milliseconds = {mds} }} + + mds / 3600000, d + mds / 3600000, d + (mds % 3600000) / 60000, d + (mds % 3600000) / 60000, d + (mds / 1000) % 60, d + (mds / 1000) % 60, d + mds % 1000, d + mds % 1000, d + + + + + {d.pattern} + + + + + ref._q_value + + + + + strong reference to shared pointer of type {"$T1"} + + value == 0 + d->weakref._q_value + d->strongref._q_value + + + + + pointer to implicit shared object of type {"$T1"} + + d + + + + + pointer to explicit shared object of type {"$T1"} + + d + + + + + guarded pointer to subclass of QObject of type {"$T1"} + + wp.d == 0 || wp.d->strongref._q_value == 0 || wp.value == 0 + + + + + weak reference to shared pointer of type {"$T1"} + + d == 0 || d->strongref._q_value == 0 || value == 0 + d->weakref._q_value + d->strongref._q_value + + + + + scoped pointer to a dynamically allocated object of type {"$T1"} + + !d + + + + + scoped pointer to dynamically allocated array of objects of type {"$T1"} + + !d + + + + + ({first}, {second}) + + first + second + + + + + + {{ size = {d->size} }} + + d->ref.atomic._q_value + + d->size + ($T1*)((reinterpret_cast<char*>(d)) + d->offset) + + + + + + + {{ size = {d->end - d->begin} }} + + d->ref.atomic._q_value + + d->end - d->begin + *reinterpret_cast<$T1*>((sizeof($T1) > sizeof(void*)) + ? reinterpret_cast<Node*>(d->array + d->begin + $i)->v + : reinterpret_cast<$T1*>(d->array + d->begin + $i)) + + + + + + + {{ size = {d->end - d->begin} }} + + d->ref.atomic._q_value + + d->end - d->begin + + *reinterpret_cast<QString*>((sizeof(QString) > sizeof(void*)) + ? reinterpret_cast<Node*>(d->array + d->begin + $i)->v + : reinterpret_cast<QString*>(d->array + d->begin + $i)) + + + + + + + {{ size = {d->end - d->begin} }} + + d->ref.atomic._q_value + + d->end - d->begin + + *reinterpret_cast<QVariant*>((sizeof(QVariant) > sizeof(void*)) + ? reinterpret_cast<Node*>(d->array + d->begin + $i)->v + : reinterpret_cast<QVariant*>(d->array + d->begin + $i)) + + + + + + + {{ size = {d->size} }} + + d->ref.atomic._q_value + + d->size + d->n + n + (*(QLinkedListNode<$T1>*)this).t + + + + + + ({key}, {value}) + + key + value + + + + + + {{ size = {d->size} }} + + d->ref.atomic._q_value + + d->size + d->header.left + left + right + *((QMapNode<$T1,$T2>*)this) + + + + + + (empty) + ({key}, {value}) + + key + value + next + + + + + + {{ size = {d->size} }} + + + d->numBuckets + reinterpret_cast<Node **>(d->buckets) + + + + + + + d->size + + + node = *(bucket++) + --n + + + keyValuePair = reinterpret_cast<Node *>(node) + keyValuePair->value + node = node->next + + + + + + + + (empty) + ({key}) + + key + + + + + {{ size = {q_hash.d->size} }} + + q_hash + + + + + ({*keyPtr}, {*t}) + + *keyPtr + *t + + + + + {{ size = {hash.d->size} }} + + mx + total + hash.d->ref.atomic._q_value + + hash.d->size + f + n + *((Node*)this) + + + + + + + + + + + + + + {{ row count = {(*d_ptr.d).rows()}, column count = {(*d_ptr.d).columns()} }} + + d_ptr.d,! + (*d_ptr.d).rows() + (*d_ptr.d).columns() + + + + + + + Invalid + {d.data.b} + {d.data.i} + {d.data.u} + {d.data.ll} + {d.data.ull} + {d.data.d} + {d.data.c} + + {*((QMap<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QList<QVariant>*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QString*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QStringList*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QByteArray*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QBitArray*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QDate*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QTime*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + DateTime + Url + Locale + + {*((QRect*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QRectF*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QSize*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QSizeF*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QLine*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QLineF*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QPoint*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + + {*((QPointF*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + RegExp + RegularExpression + + {*((QHash<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr)))} + + EasingCurve + Uuid + ModelIndex + LastCoreType + Font + Pixmap + Brush + Color + Palette + Image + Polygon + Region + Bitmap + Cursor + KeySequence + Pen + TextLength + TextFormat + Matrix + Transform + Matrix4x4 + Vector2D + Vector3D + Vector4D + Quaternion + PolygonF + Icon + LastGuiType + SizePolicy + UserType + LastType + + + + + + d.data.c + + + *((QString*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + + *((QByteArray*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + + + + + + + *((QMap<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QList<QVariant>*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QString*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QStringList*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QByteArray*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QBitArray*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QDate*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QTime*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QRect*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QRectF*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QSize*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QSizeF*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QLine*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QLineF*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QPoint*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QPointF*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + *((QHash<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr + : reinterpret_cast<const void *>(&d.data.ptr))) + + + + + + + diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..856e455 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,41 @@ +{ + "files.autoSave": "onFocusChange", + "editor.fontSize": 14, + "editor.fontFamily": "'FiraCode Nerd Font Mono', 'FiraCode Nerd Font Mono', 'FiraCode Nerd Font Mono'", + "cmake.configureOnOpen": true, + "cmake.debugConfig": { + "console": "integratedTerminal", + "visualizerFile": "${workspaceRoot}/.vscode/qt5.natvis" + }, + "cmake.environment": { + "PATH": "${env:PATH};C:\\Qt\\Qt5.14.2\\5.14.2\\msvc2017_64\\bin" + }, + "cmake.options.statusBarVisibility": "visible", + "cmake.generator": "Ninja", + "C_Cpp.intelliSenseEngine": "disabled", + "clangd.arguments": [ + "--header-insertion=never", + "--all-scopes-completion", + "--completion-style=detailed", + "--clang-tidy", + "-j=4", + "--pch-storage=memory", + "--compile-commands-dir=build", + "--background-index", + "--ranking-model=heuristics", + "--function-arg-placeholders=false", + "--query-driver=/usr/bin/clang++" + ], + "editor.inlayHints.enabled": "off", + "editor.unicodeHighlight.allowedLocales": { + "ja": true, + "zh-hant": true, + "zh-hans": true + }, + "files.associations": { + "iostream": "cpp" + }, + "workbench.colorCustomizations": { + //"editor.background": "#C0C0C0" + } +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..6195d89 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,79 @@ +cmake_minimum_required(VERSION 3.5) + +set(CMAKE_PREFIX_PATH "C:\\Qt\\Qt5.14.2\\5.14.2\\msvc2017\\") +project(sx-calendar VERSION 0.1 LANGUAGES CXX) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + + +if (MSVC) + add_compile_options(/source-charset:utf-8) +endif() + + +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets WebEngineWidgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets WebEngineWidgets) + +set(PROJECT_SOURCES + main.cpp + MainWidget.cpp + MainWidget.h + MainWidget.ui + resource/ico.rc +) + +if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) + qt_add_executable(sx-calendar + MANUAL_FINALIZATION + ${PROJECT_SOURCES} + ) +# Define target properties for Android with Qt 6 as: +# set_property(TARGET sx-calendar APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR +# ${CMAKE_CURRENT_SOURCE_DIR}/android) +# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation +else() + if(ANDROID) + add_library(sx-calendar SHARED + ${PROJECT_SOURCES} + ) +# Define properties for Android with Qt 5 after find_package() calls as: +# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") + else() + add_executable(sx-calendar + ${PROJECT_SOURCES} + source.qrc + ) + endif() +endif() + +target_link_libraries(sx-calendar PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::WebEngineWidgets) + +# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. +# If you are developing for iOS or macOS you should consider setting an +# explicit, fixed bundle identifier manually though. +if(${QT_VERSION} VERSION_LESS 6.1.0) + set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.sx-calendar) +endif() +set_target_properties(sx-calendar PROPERTIES + ${BUNDLE_ID_OPTION} + MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + MACOSX_BUNDLE TRUE + WIN32_EXECUTABLE TRUE +) + +include(GNUInstallDirs) +install(TARGETS sx-calendar + BUNDLE DESTINATION . + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +) + +if(QT_VERSION_MAJOR EQUAL 6) + qt_finalize_executable(sx-calendar) +endif() diff --git a/MainWidget.cpp b/MainWidget.cpp new file mode 100644 index 0000000..cd172d8 --- /dev/null +++ b/MainWidget.cpp @@ -0,0 +1,35 @@ +#include "MainWidget.h" +#include "./ui_MainWidget.h" +#include +#include +#include +#include +#include + +MainWidget::MainWidget(QWidget *parent) + : QWidget(parent) + , ui(new Ui::MainWidget) +{ + ui->setupUi(this); + + setFixedSize(800, 530); + // setMinimumSize(800, 530); + // resize(800, 530); + + setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint); + setWindowIcon(QIcon("://resource/icons.ico")); + setWindowTitle(u8"寿星天文历5.10Plus"); + + QWebEngineView *webView = new QWebEngineView(); + QString htmlFilePath("qrc:/resource/index.html"); + webView->load(QUrl(htmlFilePath)); + QVBoxLayout* lay = new QVBoxLayout(this); + lay->setContentsMargins(0,0,0,0); + lay->addWidget(webView); + setLayout(lay); +} + +MainWidget::~MainWidget() +{ + delete ui; +} diff --git a/MainWidget.h b/MainWidget.h new file mode 100644 index 0000000..a146310 --- /dev/null +++ b/MainWidget.h @@ -0,0 +1,20 @@ +#ifndef MAINWIDGET_H +#define MAINWIDGET_H + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class MainWidget; } +QT_END_NAMESPACE + +class MainWidget : public QWidget +{ + Q_OBJECT + +public: + MainWidget(QWidget *parent = nullptr); + ~MainWidget(); +private: + Ui::MainWidget *ui; +}; +#endif // MAINWIDGET_H diff --git a/MainWidget.ui b/MainWidget.ui new file mode 100644 index 0000000..74273fb --- /dev/null +++ b/MainWidget.ui @@ -0,0 +1,19 @@ + + + MainWidget + + + + 0 + 0 + 800 + 600 + + + + MainWidget + + + + + diff --git a/ReadMe.md b/ReadMe.md new file mode 100644 index 0000000..d5ff51b --- /dev/null +++ b/ReadMe.md @@ -0,0 +1,3 @@ +# 说明 + +寿星天文历 5.10Plus 万年历封装。 \ No newline at end of file diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..fa7533a --- /dev/null +++ b/main.cpp @@ -0,0 +1,11 @@ +#include "MainWidget.h" + +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWidget w; + w.show(); + return a.exec(); +} diff --git a/resource/ico.rc b/resource/ico.rc new file mode 100644 index 0000000..ee490cf --- /dev/null +++ b/resource/ico.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON DISCARDABLE "icons.ico" diff --git a/resource/icons.ico b/resource/icons.ico new file mode 100644 index 0000000000000000000000000000000000000000..2f4774c5594a55f4468e042ff7efae2363b95370 GIT binary patch literal 114518 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 + + 寿星天文历5.10Plus + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +   +
+ + + 天文万年历法 + + + + + +
+ + + + + + 天象 + 恒星 + 气朔 + 升降 + + 八字 + 工具 + 常数 + 帮助 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
 提示:如果按住ctrl键不放,再将鼠标移出日历区,即可保持该日信息摘要不变; 日月升降是本地时间,气朔时刻是北京时间;输入公元前212年方法是B212或*212或-211;BC4713至9999年有效, + BC722年以后与实历相符。 +

+ +
+
+ +
+
+ + + + + +
+ 公元年 + 月 + + + + + + +
+
+
+
+ +
+ + + + + + + + + +
+ + + + + + + + + + +
+ [ + 定气速度测试 + 定朔速度测试] [ + 气朔计算 + 清空] +
+ +
+
+
+ + + \ No newline at end of file diff --git a/source.qrc b/source.qrc new file mode 100644 index 0000000..68eaa61 --- /dev/null +++ b/source.qrc @@ -0,0 +1,6 @@ + + + resource/index.html + resource/icons.ico + +