2016-08-19 65 views
1

我有一个问题。 在我*的.cpp我有以下功能:如何从QVariant参数转换时选择方法重载?

void QcWMenuBar::setItems(const QVariantList & items) 
{ 
    clear(); 
    Q_FOREACH(const QVariant & item, items) 
    //addMenu(item); 
} 

的Qt已经得到了许多不同的addMenu()函数,因此我的程序不知道哪些功能供一个的QVariant类型。 我需要在这种情况下addMenu(QMenu * item)

如何让Qt使用此功能?

+0

_“的Qt已经得到了许多不同的addMenu()函数” _ - 甚至更多'addAction'功能。这是因为有许多可能的场景和用例。请描述你的要求,这些'项目'(文本,数字,图标等)是什么,以后你需要做什么,当一个菜单项将被触发... – mvidelgauz

+0

我正在帮助开发音频编程语言SuperCollider 。 –

+2

对不起,我需要很长时间才能找到我所问的和你的答案之间的相互关系...... – mvidelgauz

回答

2

你必须获得来自变种正确类型的值:

void QcWMenuBar::setItems(const QVariantList & items) 
{ 
    clear(); 
    for (auto & item: items) { 
    Q_ASSERT(item.canConvert<QMenu*>()); 
    addMenu(item.value<QMenu*>()); 
    } 
} 
相关问题