この回答はつらいかも…
ぜんぜん関係ないのですが、調べ物をしていて思ったことです。
ビルド時のエラーを見て、検索した結果Debianのbug tracking systemが引っかかりました。
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=343746
ビルド時に以下のようなエラーが出ました。少しピンとこないので、同じエラーになっている人がいないか調べてみたのです。
settings.cpp: In member function 'void brynhildr::Settings::readSettings()':
settings.cpp:77:34: error: conversion from 'long int' to 'const QVariant' is ambiguous
QTB_DEFAULT_VIDEOQUALITY).toInt());
^
settings.cpp:77:34: note: candidates are:
In file included from C:/Tools/develop/Qt/Qt5.3.0/5.3/mingw482_32/include/QtCore/qvariantanimation.h:48:0,
from C:/Tools/develop/Qt/Qt5.3.0/5.3/mingw482_32/include/QtCore/qpropertyanimation.h:45,
:
:
実は、この最後の行以降に重要なヒントが書かれているのですが、質問者はそれに気づいていないようです。Debianのbug tacking systemに書くくらいの開発者なら、気づいてもよいのでは?という判断でしょうか…
回答者の答えは、「Subjectを見ろ」の一言です( ^ω^ )(あなたがもう答えを書いているというユーモアかも)
私の場合で答えるとすれば、QSettingsクラスのvalueという関数を使っていたのですが、
この関数の定義はQt Assistantによれば、以下のようになっています。
QVariant QSettings::value(const QString & key, const QVariant & defaultValue = QVariant()) const
エラーはlong int から QVariantへの変換が曖昧です、というメッセージです。
具体的には以下のように書いていました。
// load videoQualilty
setVideoQuality(settings.value(QTB_VIDEOQUALITY, QTB_DEFAULT_VIDEOQUALITY).toInt());
第二引数がマクロQTB_DEFAULT_VIDEOQUALITY(5)という定数値だったのですが、これをvalue()に適用するなら、第二引数はQVariantでなければならないので変換しなければならないけど、候補がたくさんあって分からないよ、ってことのようです。
今回は以下のように明示してあげました。
// load videoQualilty
setVideoQuality(settings.value(QTB_VIDEOQUALITY, (qint32)QTB_DEFAULT_VIDEOQUALITY).toInt());
このようにかけば、5という値はqint32なので、これをQVariantに変換すればいいのですね、とコンパイラが判断してくれて、エラーが解決するということのようです。
確かにSubjectに
settings.cpp:77:34: error: conversion from 'long int' to 'const QVariant' is ambiguous
って書いてあれば、「答えはそこにあなたが書いてあるでしょ」と、言いたくなるのも分からなくはないですが、少しさみしいですよね…
« 多言語対応の途中ですが… | トップページ | PCMデータの同期をどうするかを考える前に »
コメント