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

标签 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 使用这个函数?

最佳答案

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

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

关于c++ - 从 QVariant 参数转换时如何选择方法重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39043424/

相关文章:

c++ - 在字符数组中插入新换行符

使用 C API PyRun_String 时出现 Python 系统错误

c++ - ITK-图像处理,计算3D图像的形状特征

QT:更改构建的可执行文件的名称

python - 将带有子元素的整个 QGraphicSscene 保存到文件中

C++ 元编程 : A template parameter which *must* inherit an abstract class

c++ - cmake 如何在项目的 vcxproj PropertyGroup 中添加自定义条目?

qt - 什么时候复制当前打开的 SQLite 数据文件是安全的?

qt多个QSqlTableModels在一个事务中一起编辑

c++ - 有没有办法使用 QJsonObject 在整个 json 文件中找到一个键?