从QVariant参数转换时如何选择方法重载?

时间:2016-08-19 16:03:22

标签: c++ qt

我有问题。 在我的* .cpp中,我有以下功能:

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

Qt有许多不同的addMenu()函数,因此我的程序不知道QVariant类型使用什么函数。 在这种情况下,我需要addMenu(QMenu * item)

如何告诉Qt使用此功能?

1 个答案:

答案 0 :(得分:2)

您必须从变体中获取正确类型的值:

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