如何从 QVariant 检索 QPair?

Vad*_*kin 1 qt

我正在做,auto data = combobox->currentData().value<QPair>();但编译器抱怨:

\n\n
[ 48%] Building CXX object src/CMakeFiles/mudlet.dir/dlgProfilePreferences.cpp.o\n/home/vadi/Programs/Mudlet/mudlet/src/dlgProfilePreferences.cpp: In lambda function:\n/home/vadi/Programs/Mudlet/mudlet/src/dlgProfilePreferences.cpp:420:81: error: no matching function for call to \xe2\x80\x98QVariant::value()\xe2\x80\x99\n                 auto data = script_preview_combobox->currentData().value<QPair>();\n                                                                                 ^\nIn file included from /home/vadi/Programs/Qt/5.9/gcc_64/include/QtCore/QVariant:1:0,\n                 from /home/vadi/Programs/Mudlet/mudlet/cmake-build-debug/src/ui_profile_preferences.h:12,\n                 from /home/vadi/Programs/Mudlet/mudlet/src/dlgProfilePreferences.h:27,\n                 from /home/vadi/Programs/Mudlet/mudlet/src/dlgProfilePreferences.cpp:25:\n/home/vadi/Programs/Qt/5.9/gcc_64/include/QtCore/qvariant.h:351:14: note: candidate: template<class T> T QVariant::value() const\n     inline T value() const\n              ^\n/home/vadi/Programs/Qt/5.9/gcc_64/include/QtCore/qvariant.h:351:14: note:   template argument deduction/substitution failed:\nsrc/CMakeFiles/mudlet.dir/build.make:806: recipe for target 'src/CMakeFiles/mudlet.dir/dlgProfilePreferences.cpp.o' failed\n
Run Code Online (Sandbox Code Playgroud)\n\n

据我所知,我的电话与template<class T> T QVariant::value()- 出了什么问题?

\n

aat*_*two 5

QPair 是一个模板类,用于从变体获取值的代码并未完全描述该类型。

首先,您需要知道您的 QPair 描述的是哪两种类型。然后,您必须使用以下代码来提取它(将 QString 和 int 更改为您的pairs数据类型):

auto pair = combobox->currentData().value<QPair<QString, int> >();
Run Code Online (Sandbox Code Playgroud)