2017-06-11 32 views
0

我做auto data = combobox->currentData().value<QPair>();但編譯器抱怨:如何從QVariant檢索QPair?

[ 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 

據我看到的,我的電話與template<class T> T QVariant::value()排隊 - 有什麼不對?

+0

https://stackoverflow.com/questions/27461592/convert-qpair-to-qvariant –

回答

3

QPair是一個模板類,用於從變體中獲取值的代碼不完全描述類型。

首先您需要知道您的QPair描述了哪兩種類型。然後,你必須使用下面的代碼來提取它(改變的QString和int您對數據類型):

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