当前位置: 首页 > news >正文

谷歌优化seo冯耀宗seo博客优化

谷歌优化seo,冯耀宗seo博客优化,wordpress直接访问站点,怎样在自己的网站上家程序【写在前面】 在现代桌面应用程序开发中#xff0c;系统主题感知是一项重要的功能#xff0c;它使得应用程序能够根据用户的系统主题设置#xff08;如深色模式或浅色模式#xff09;自动调整其外观。 Qt 作为一个跨平台的C图形用户界面应用程序开发框架#xff0c;提供…【写在前面】 在现代桌面应用程序开发中系统主题感知是一项重要的功能它使得应用程序能够根据用户的系统主题设置如深色模式或浅色模式自动调整其外观。 Qt 作为一个跨平台的C图形用户界面应用程序开发框架提供了丰富的工具和类来实现这一功能。 【正文开始】 一、使用效果 二、系统主题感知助手类SystemThemeHelper SystemThemeHelper类是一个封装了系统主题感知功能的Qt对象。它主要通过读取系统设置和监听系统主题变化来更新应用程序的主题颜色和颜色方案。 类定义与属性 在systemthemehelper.h中SystemThemeHelper类继承自QObject并定义了两个属性themeColor和colorScheme。这两个属性分别表示当前的主题颜色和颜色方案深色、浅色或无。 class SystemThemeHelper : public QObject {Q_OBJECTQ_PROPERTY(QColor themeColor READ themeColor NOTIFY themeColorChanged)Q_PROPERTY(SystemThemeHelper::ColorScheme colorScheme READ colorScheme NOTIFY colorSchemeChanged)// ... };ColorScheme是一个枚举类定义了三种颜色方案None、Dark和Light。 构造函数与析构函数 SystemThemeHelper的构造函数初始化了一些私有成员变量并启动了一个定时器用于定期更新主题颜色和颜色方案。析构函数则负责清理资源。 SystemThemeHelper::SystemThemeHelper(QObject *parent): QObject{parent}, d_ptr(new SystemThemeHelperPrivate(this)) {Q_D(SystemThemeHelper);d-m_themeColor getThemeColor();d-m_colorScheme getColorScheme();d-m_timer.start(200, this);#ifdef Q_OS_WINinitializeFunctionPointers();#endif }SystemThemeHelper::~SystemThemeHelper() {// 清理资源 }获取主题颜色和颜色方案 getThemeColor和getColorScheme是两个不可用于绑定的方法它们立即返回当前的主题颜色和颜色方案但不会触发任何更新通知。这两个方法主要用于快速获取当前设置而不关心后续的变化。 QColor SystemThemeHelper::getThemeColor() const {Q_D(const SystemThemeHelper);#ifdef Q_OS_WINreturn QColor::fromRgb(d-m_themeColorSettings.value(ColorizationColor).toUInt());#endif }SystemThemeHelper::ColorScheme SystemThemeHelper::getColorScheme() const {Q_D(const SystemThemeHelper);#if QT_VERSION QT_VERSION_CHECK(6, 5, 0)const auto scheme QGuiApplication::styleHints()-colorScheme();return scheme Qt::ColorScheme::Dark ? ColorScheme::Dark : ColorScheme::Light;#else#ifdef Q_OS_WINreturn !d-m_colorSchemeSettings.value(AppsUseLightTheme).toBool() ? ColorScheme::Dark : ColorScheme::Light;#else //linuxconst QPalette defaultPalette;const auto text defaultPalette.color(QPalette::WindowText);const auto window defaultPalette.color(QPalette::Window);return text.lightness() window.lightness() ? ColorScheme::Dark : ColorScheme::Light;#endif // Q_OS_WIN#endif // QT_VERSION }更新主题颜色和颜色方案 themeColor和colorScheme是两个可用于绑定的方法它们返回当前的主题颜色和颜色方案并在值发生变化时发出通知。这两个方法内部调用了私有成员函数的更新逻辑。 QColor SystemThemeHelper::themeColor() {Q_D(SystemThemeHelper);d-_updateThemeColor();return d-m_themeColor; }SystemThemeHelper::ColorScheme SystemThemeHelper::colorScheme() {Q_D(SystemThemeHelper);d-_updateColorScheme();return d-m_colorScheme; }设置窗口标题栏模式 setWindowTitleBarMode方法允许设置窗口标题栏的模式深色或浅色。这个方法在Windows平台上通过调用 DWM API 实现而在其他平台上则不支持。 bool SystemThemeHelper::setWindowTitleBarMode(QWindow *window, bool isDark) {#ifdef Q_OS_WINreturn bool(pDwmSetWindowAttribute ? !pDwmSetWindowAttribute(HWND(window-winId()), 20, isDark, sizeof(BOOL)) : false);#elsereturn false;#endif //Q_OS_WIN }定时器事件处理 timerEvent方法是一个虚函数用于处理定时器事件。它定期调用更新函数来检查主题颜色和颜色方案是否发生变化并在变化时发出通知。 void SystemThemeHelper::timerEvent(QTimerEvent *) {Q_D(SystemThemeHelper);d-_updateThemeColor();d-_updateColorScheme(); }三、实现细节 SystemThemeHelperPrivate是SystemThemeHelper的私有实现类它封装了所有的实现细节和状态变量。这个类主要负责读取系统设置、更新主题颜色和颜色方案并发出通知。 构造函数与成员变量 SystemThemeHelperPrivate的构造函数接收一个指向SystemThemeHelper的指针并初始化成员变量。成员变量包括主题颜色、颜色方案、定时器和一些平台特定的设置对象。 SystemThemeHelperPrivate::SystemThemeHelperPrivate(SystemThemeHelper *q): q_ptr(q) {// 初始化成员变量 }更新函数 _updateThemeColor和_updateColorScheme是两个更新函数它们检查当前的主题颜色和颜色方案是否发生变化并在变化时更新成员变量并发出通知。 void SystemThemeHelperPrivate::_updateThemeColor() {Q_Q(SystemThemeHelper);auto nowThemeColor q-getThemeColor();if (nowThemeColor ! m_themeColor) {m_themeColor nowThemeColor;emit q-themeColorChanged();} }void SystemThemeHelperPrivate::_updateColorScheme() {Q_Q(SystemThemeHelper);auto nowColorScheme q-getColorScheme();if (nowColorScheme ! m_colorScheme) {m_colorScheme nowColorScheme;emit q-colorSchemeChanged();} }平台特定的实现 在Windows平台上SystemThemeHelperPrivate使用QSettings来读取系统主题设置并使用DWM API来设置窗口标题栏的模式。这些实现细节被封装在条件编译块中以确保跨平台的兼容性。 #ifdef Q_OS_WIN QSettings m_themeColorSettings{QSettings::UserScope, Microsoft, Windows\\DWM}; QSettings m_colorSchemeSettings{QSettings::UserScope, Microsoft, Windows\\CurrentVersion\\Themes\\Personalize}; static DwmSetWindowAttributeFunc pDwmSetWindowAttribute nullptr; // ... static inline bool initializeFunctionPointers() {// 初始化DWM API函数指针 } #endif //Q_OS_WIN四、如何使用 C SystemThemeHelper *helper new SystemThemeHelper;QObject::connect(helper, SystemThemeHelper::themeColorChanged, [helper]{qDebug() helper-getThemeColor();});QObject::connect(helper, SystemThemeHelper::colorSchemeChanged, [helper]{qDebug() helper-getColorScheme();});Qml import QtQuick 2.15 import QtQuick.Window 2.15import DelegateUI.Utils 1.0Window {id: windowwidth: 640height: 480visible: truetitle: qsTr(SystemThemeHelper Test - ) (themeHelper.colorScheme SystemThemeHelper.Dark ? Dark : Light)color: themeHelper.colorScheme SystemThemeHelper.Dark ? black : whiteBehavior on color { ColorAnimation { } }SystemThemeHelper {id: themeHelperonThemeColorChanged: {console.log(onThemeColorChanged:, themeColor);}onColorSchemeChanged: {setWindowTitleBarMode(window, themeHelper.colorScheme SystemThemeHelper.Dark)console.log(onColorSchemeChanged:, colorScheme);}Component.onCompleted: {console.log(onColorSchemeChanged:, colorScheme);setWindowTitleBarMode(window, themeHelper.colorScheme SystemThemeHelper.Dark)}}Text {anchors.centerIn: parenttext: qsTr(主题颜色)font.family: 微软雅黑font.pointSize: 32color: themeHelper.themeColor} } 【结语】 通过SystemThemeHelper类我们可以在 Qt 应用程序中实现系统主题感知功能。 这个类封装了读取系统设置、更新主题颜色和颜色方案以及发出通知的逻辑使得我们可以轻松地根据系统主题变化来调整应用程序的外观。 此外通过条件编译和平台特定的实现还确保了跨平台的兼容性。 最后项目链接(多多star呀…⭐_⭐) Github: https://github.com/mengps/QmlControls Gitee: https://gitee.com/MenPenS/QmlControls
http://www.w-s-a.com/news/199733/

相关文章:

  • 福建网站建设有限公司需求网站
  • 生物科技企业网站做的比较好的企业培训网站模板
  • 南京 高端网站建设网站备案密码怎么找回
  • 蛋糕店网站模板建设电子商务系统网站
  • 海口网站建设优化公司网站开发要加班吗
  • 建设一个网站需要注意哪些要求群晖的网站开发
  • 精通网站开发阅读网页视频下载慢怎么办
  • 网站标题的选择巴音郭楞库尔勒网站建设
  • 成都市网站建设服务商怎么进网站后台管理系统
  • 企业网站站内优化30岁做网站编辑
  • 与安网站建设网站建设征求意见稿
  • 学校网站推广做网站手把手
  • 网站开发遇到的难题wordpress文章调用
  • 网站建设做的好在线logo免费设计生成器标智客
  • 郑州做网站齿轮网站排名怎么做 site
  • 船员专用网站开发建议wordpress 图片占用id
  • 桌面软件开发跟网站开发那个上海网站备案在哪里查询
  • 罗湖网站建设陕西省建设网官网住房和城乡厅官网
  • 做一个网站的详细教学wordpress 忘记用户名密码
  • 建设银行的网站是多少wordpress添加新页面跳转
  • 网站设计费用抓取网站访客qq号码
  • 驾校视频网站模板郑州网站建设价格
  • 上海 有哪些做网站的公司成都企业网站备案流程
  • 移动端快速建站的方法青海公司网站建设
  • 网站重新搭建程序要多少钱移动互联网应用的使用情况
  • 学建站论坛给别人做网站怎么赚钱吗
  • 响应式网站代码校友会网站建设的目的
  • 北京公司网站网站建设html模板
  • 专门做医疗器械的网站免费网页制作系统团队
  • 网站开发技术 html临夏网站建设