Qt 如何从QVariant检索QPair?

Qt 如何从QVariant检索QPair?,qt,Qt,我正在做autodata=combobox->currentData().value()但编译器抱怨: [ 48%] Building CXX object src/CMakeFiles/mudlet.dir/dlgProfilePreferences.cpp.o /home/vadi/Programs/Mudlet/mudlet/src/dlgProfilePreferences.cpp: In lambda function: /home/vadi/Programs/Mudlet/mudle

我正在做
autodata=combobox->currentData().value()但编译器抱怨:

[ 48%] Building CXX object src/CMakeFiles/mudlet.dir/dlgProfilePreferences.cpp.o
/home/vadi/Programs/Mudlet/mudlet/src/dlgProfilePreferences.cpp: In lambda function:
/home/vadi/Programs/Mudlet/mudlet/src/dlgProfilePreferences.cpp:420:81: error: no matching function for call to ‘QVariant::value()’
                 auto data = script_preview_combobox->currentData().value<QPair>();
                                                                                 ^
In file included from /home/vadi/Programs/Qt/5.9/gcc_64/include/QtCore/QVariant:1:0,
                 from /home/vadi/Programs/Mudlet/mudlet/cmake-build-debug/src/ui_profile_preferences.h:12,
                 from /home/vadi/Programs/Mudlet/mudlet/src/dlgProfilePreferences.h:27,
                 from /home/vadi/Programs/Mudlet/mudlet/src/dlgProfilePreferences.cpp:25:
/home/vadi/Programs/Qt/5.9/gcc_64/include/QtCore/qvariant.h:351:14: note: candidate: template<class T> T QVariant::value() const
     inline T value() const
              ^
/home/vadi/Programs/Qt/5.9/gcc_64/include/QtCore/qvariant.h:351:14: note:   template argument deduction/substitution failed:
src/CMakeFiles/mudlet.dir/build.make:806: recipe for target 'src/CMakeFiles/mudlet.dir/dlgProfilePreferences.cpp.o' failed
[48%]构建CXX对象src/cmakfiles/mudlet.dir/dlgProfilePreferences.cpp.o
/home/vadi/Programs/Mudlet/Mudlet/src/dlgProfilePreferences.cpp:在lambda函数中:
/home/vadi/Programs/Mudlet/Mudlet/src/dlgProfilePreferences.cpp:420:81:错误:调用“QVariant::value()”时没有匹配的函数
自动数据=脚本\预览\组合框->当前数据().value();
^
在/home/vadi/Programs/Qt/5.9/gcc_64/include/QtCore/QVariant:1:0中包含的文件中,
从/home/vadi/Programs/Mudlet/Mudlet/cmake build debug/src/ui_profile_preferences.h:12,
from/home/vadi/Programs/Mudlet/Mudlet/src/dlgProfilePreferences.h:27,
来自/home/vadi/Programs/Mudlet/Mudlet/src/dlgProfilePreferences.cpp:25:
/home/vadi/Programs/Qt/5.9/gcc_64/include/QtCore/qvariant.h:351:14:注:候选:模板T qvariant::value()const
内联T值()常量
^
/home/vadi/Programs/Qt/5.9/gcc_64/include/QtCore/qvariant.h:351:14:注意:模板参数推导/替换失败:
src/CMakeFiles/mudlet.dir/build.make:806:目标'src/CMakeFiles/mudlet.dir/dlgProfilePreferences.cpp.o'的配方失败

据我所见,我的调用与
template T QVariant::value()
-怎么了?

QPair是一个模板类,您从变量获取值的代码没有完全描述类型

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

auto-pair=combobox->currentData().value();

QPair是一个模板类,用于从变量中获取值的代码没有完全描述类型

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

auto-pair=combobox->currentData().value();
auto pair = combobox->currentData().value<QPair<QString, int> >();