2014-09-02 56 views
1

项目应该给出随机数,但这并不重要,那么随机数在第一张图中找到并添加到第二张图中。如何把一个QMap放到另一个QMap中

int rand = 2; 
QPixmap pixmap1 = QPixmap (":/imag/sedam_one.jpg"); 
QPixmap pixmap2 = QPixmap (":/imag/gedam_one.jpg"); 
QPixmap pixmap3 = QPixmap (":/imag/tedam_one.jpg"); 
QMap<int, QPixmap> map; 
map.insert(1, pixmap1); 
map.insert(2, pixmap2); 
map.insert(3, pixmap3); 
QMap<int, QPixmap> myMap; 
myMap.insert(map.key(rand), map.value(rand)); 
+0

如果“兰德”是不是在“地图”,这将失败 – cppguy 2014-09-02 19:44:21

+0

你想取键值对一个有效的密钥从一张地图随机抽取然后放入另一张地图?这是你的问题吗? – mhcuervo 2014-09-02 20:36:40

+0

'myMap.insert(rand,map.take(rand))'呢? - >提供你确保rand是第一个有效的键。 – mhcuervo 2014-09-02 20:54:00

回答

0

您的代码将根据你想要的时候rand不是一个有效的密钥的行为是不同的。

  1. 如果你想忽略的关键,如果它不存在于map,你可以使用:

    if (map.find(rand) != map.end()) 
    { 
        myMap.insert(map.key(rand), map.value(rand)); 
    } 
    
  2. 如果你想有一个缺省构造的值时,关键是不是有地图,您不会创建从上面的代码中if检查和简单地使用你的代码:

    myMap.insert(map.key(rand), map.value(rand)); 
    
+0

不起作用,但我找到解决方案 – mario 2014-09-03 09:03:40

+0

@mario,如果您认为您的解决方案对SO有用,请将其作为答案发布。否则,删除你的问题。 – 2014-09-03 15:15:40

0

以下是一种方法:

int rand = 2; 
QPixmap pixmap1 = QPixmap (":/imag/sedam_one.jpg"); 
QPixmap pixmap2 = QPixmap (":/imag/gedam_one.jpg"); 
QPixmap pixmap3 = QPixmap (":/imag/tedam_one.jpg"); 
QMap<int, QPixmap> map; 
map.insert(1, pixmap1); 
map.insert(2, pixmap2); 
map.insert(3, pixmap3); 
QMap<int, QPixmap> myMap; 
myMap.insert(rand, map.value(rand)); 

注意最后一行。 map.key(rand)应该只是rand因为该方法map.key()要求你把一个值,如QPixmap的