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

How to choose a method overload when converting from a QVariant argument?

本文关键字:选择 方法 重载 转换 参数 QVariant      更新时间:2023-10-16

我有一个问题。在我的*.cpp中,我有以下函数:

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

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

我如何告诉Qt使用这个函数?

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

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