QT 如何實現enum與字符串的互轉

將enum中定義的枚舉值,以字符串的形式寫入文件,同時也能從字符串轉為枚舉值。舉例說明:
ColorSelector中的Colors枚舉,我們希望 kColorRed 這個寫入到本地文件時,可以直接保存“kColorRed”,而非kColorRed對應的值(100)。但是從本地文件讀取到“kColorRed”時,可以轉換為對應的值(100)。

頭文件

#ifndef ENUMCLASS_H
#define ENUMCLASS_H#include <QObject>class ColorSelector : public QObject
{Q_OBJECT
public://enum Colors{kColorRed=100,kColorGreen,kColorBlue,kColorGray,kColorBlack,kColorPink,kColorBrown,kColorOrange,kColorDark,};Q_ENUM(Colors);public:explicit ColorSelector(QObject *parent = nullptr);void output();
signals:};#endif // ENUMCLASS_H

cpp文件

#include "enumclass.h"
#include <QMetaEnum>
#include <QDebug>ColorSelector::ColorSelector(QObject *parent) : QObject(parent)
{}void ColorSelector::output()
{QMetaEnum metaEnum;metaEnum = QMetaEnum::fromType<Colors>();int val = metaEnum.keyToValue("kColorBlack");qDebug() << "val=" << val;Colors clr = static_cast<Colors>(metaEnum.keyToValue("kColorBrown"));qDebug() << "clr=" << clr;QString key = metaEnum.valueToKey(clr);qDebug() << "key=" << key;QString key2 = metaEnum.valueToKey(kColorOrange);qDebug() << "key2=" << key2;qDebug() << "count=" << metaEnum.keyCount();
}

測試代碼:

int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);ColorSelector cls;cls.output();return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94303.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94303.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94303.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SLAM卷不動了,機器人還有哪些方向能做?

關注gongzhonghao【CVPR頂會精選】眾所周知&#xff0c;機器人因復雜環境適應性差、硬件部署成本高&#xff0c;對高效泛化一直需求迫切。再加上多傳感器協同難題、真實場景數據獲取不易&#xff0c;當下對遷移學習 機器人智能融合的研究也就更熱烈了。不過顯然&#xff0c;這…

H.266 vs H.265/AV1/H.264:從工程落地看下一代視頻系統的技術演進

一、背景&#xff1a;編解碼標準演進背后的技術驅動 視頻編碼標準的更迭&#xff0c;從未只是一次簡單的技術升級&#xff0c;而是對碼率壓縮效率、編碼復雜度與畫質質量三者之間平衡點的持續探索。在 H.264 成為全平臺事實標準的十余年里&#xff0c;它成功支撐了 SD 至 1080…

Javascript面試題及詳細答案150道之(031-045)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

Git如何同步本地與遠程倉庫并解決沖突

在團隊協作開發中&#xff0c;保持本地倉庫與遠程倉庫同步是至關重要的。本文將詳細介紹如何使用 Git 更新本地倉庫至最新遠程版本&#xff0c;并深入解析沖突的產生原因及解決方法。一、同步本地與遠程倉庫1. 檢查遠程倉庫配置首先&#xff0c;確保本地倉庫已正確關聯遠程倉庫…

Hadoop MapReduce 3.3.4 講解~

?博客主頁&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客內容》&#xff1a;.NET、Java.測試開發、Python、Android、Go、Node、Android前端小程序等相關領域知識 &#x1f4e2;博客專欄&#xff1a; https://blog.csdn.net/m0_63815035/cat…

1、【數學】【硬幣悖論】旋轉硬幣問題

問題描述&#xff1a; 兩個相同的硬幣&#xff0c;半徑都是 rrr。一個硬幣&#xff08;稱為“動硬幣”&#xff09;沿著另一個固定不動的硬幣&#xff08;“靜硬幣”&#xff09;的外邊緣無滑動地滾動一圈&#xff0c;回到起始位置。問&#xff1a;動硬幣自身旋轉了幾圈&#x…

【盤古100Pro+開發板實驗例程】FPGA學習 | PCIE 通信測試實驗例程

本原創文章由深圳市小眼睛科技有限公司創作&#xff0c;版權歸本公司所有&#xff0c;如需轉載&#xff0c;需授權并注明出處&#xff08;www.meyesemi.com) 1. 實驗簡介 實驗目的&#xff1a; 完成 PCIE 通信測試。 實驗環境&#xff1a; Window11 PDS2022.2-SP6.4 硬件環…

基于高階累積量的調制識別

基于高階累積量的調制識別是一種利用信號的高階統計特性來識別不同調制方式的方法。 1. 基本原理 高階累積量&#xff08;Higher-Order Cumulants&#xff09;是信號處理中的一個重要工具&#xff0c;能夠捕捉信號的非高斯特性。與高階矩相比&#xff0c;高階累積量對高斯噪聲具…

Java常用數據結構入門

Java常用數據結構入門 前言 數據結構是程序設計中的基礎&#xff0c;掌握常用數據結構能幫助你更高效地解決問題。本文面向Java初學者&#xff0c;介紹Java中常用的數據結構及其基本使用方法。 1. 數組 (Array) 數組是最基礎的數據結構&#xff0c;可以存儲固定大小的同類型…

Android GPU測試

一、Basemark GPU 可選擇進行vulkan和opengl測試&#xff1a; 二、GFXBench 進行各種offscreen測試&#xff08;包括曼哈頓離屏&#xff09; 這是由GFXBench圖形性能測試套件提供的一個著名3D圖形渲染場景。 它模擬了一個復雜的未來都市環境&#xff08;類似曼哈頓&#xff…

2025年6月最新SCI-灰熊脂肪增長優化算法Grizzly Bear Fat Increase-附Matlab免費代碼

引言 本期介紹一種受自然啟發的創新算法——灰熊脂肪增長優化算法Grizzly Bear Fat Increase optimizer&#xff0c;GBFIO。GBFIO算法模仿灰熊為準備過冬而積累身體脂肪的自然行為&#xff0c;借鑒了它們的狩獵、捕魚、吃草、蜂蜜等策略。于2025年6月發表在JCR 1區&#xff0c…

Pytorch實現一個簡單的貝葉斯卷積神經網絡模型

貝葉斯深度模型的主要特點和實現說明&#xff1a;模型結構&#xff1a;結合了常規卷積層&#xff08;用于特征提取&#xff09;和貝葉斯線性層&#xff08;用于分類&#xff09;貝葉斯層將權重視為隨機變量&#xff0c;而非傳統神經網絡中的確定值使用變分推斷來近似權重的后驗…

Dubbo 3.x源碼(32)—Dubbo Provider處理服務調用請求源碼

基于Dubbo 3.1&#xff0c;詳細介紹了Dubbo Provider處理服務調用請求源碼 上文我們學習了&#xff0c;Dubbo消息的編碼解的源碼。現在我們來學習一下Dubbo Provider處理服務調用請求源碼。 當前consumer發起了rpc請求&#xff0c;經過請求編碼之后到達provider端&#xff0c;…

每日一leetcode:移動零

目錄 解題過程: 描述: 分析條件: 解題思路: 通過這道題可以學到什么: 解題過程: 描述: 給定一個數組 nums&#xff0c;編寫一個函數將所有 0 移動到數組的末尾&#xff0c;同時保持非零元素的相對順序。 請注意 &#xff0c;必須在不復制數組的情況下原地對數組進行操…

6-Django項目實戰-[dtoken]-用戶登錄模塊

1.創建應用 python manage.py startapp dtoken 2.注冊應用 settings.py中注冊 3.匹配路由4.編寫登錄功能視圖函數 import hashlib import json import timeimport jwt from django.conf import settings from django.http import JsonResponse from user.models import UserPro…

Axure日期日歷高保真動態交互原型

在數字化產品設計中&#xff0c;日期日歷組件作為高頻交互元素&#xff0c;其功能完整性與用戶體驗直接影響著用戶對產品的信任度。本次帶來的日期日歷高保真動態交互原型&#xff0c;依照Element UI、View UI等主流前端框架為參考&#xff0c;通過動態面板、中繼器、函數、交互…

【YOLOv4】

YOLOv4 論文地址&#xff1a;&#xff1a;【https://arxiv.org/pdf/2004.10934】 YOLOv4 論文中文翻譯地址&#xff1a;【深度學習論文閱讀目標檢測篇&#xff08;七&#xff09;中文版&#xff1a;YOLOv4《Optimal Speed and Accuracy of Object Detection》-CSDN博客】 yol…

【秋招筆試】2025.08.03蝦皮秋招筆試-第一題

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍在線刷題 bishipass.com 01. 蛋糕切分的最大收益 問題描述 K小姐經營著一家甜品店,今天她有一塊長度為 n n n 厘米的長條蛋糕需要切分。根據店里的規定,她必須將蛋糕切成至少 2 2

2.0 vue工程項目的創建

前提準備.需要電腦上已經安裝了nodejs 參考 7.nodejs和npm簡單使用_npmjs官網-CSDN博客 創建vue2工程 全局安裝 Vue CLI 在終端中運行以下命令來全局安裝 Vue CLI&#xff1a; npm install -g vue/cli npm install -g 表示全局安裝。vue/cli 是 Vue CLI 的包名。 安裝完成后…

視覺圖像處理中級篇 [2]—— 外觀檢查 / 傷痕模式的原理與優化設置方法

外觀缺陷檢測是工業生產中的關鍵環節&#xff0c;而傷痕模式作為圖像處理的核心算法&#xff0c;能精準識別工件表面的劃痕、污跡等缺陷。掌握其原理和優化方法&#xff0c;對提升檢測效率至關重要。一、利用傷痕模式進行外觀檢查雖然總稱為外觀檢查&#xff0c;但根據檢查對象…