このコードを使用して、ChaiScript で一連の Qt オブジェクトのいくつかのプロパティを検証します。
/// initialize the engine
boost::shared_ptr<chaiscript::ChaiScript> chai;
chai.reset(new chaiscript::ChaiScript());
std::cout << "ChaiScript engine created!!!" << std::endl;
///
/// register elements
//
assert(ui->checkBox);
chai->add(chaiscript::var(ui->checkBox), "checkBox");
///
/// adapt elements
/// QCheckBox
chai->add(chaiscript::fun(&QCheckBox::isTristate), "isTristate");
chai->add(chaiscript::fun(&QCheckBox::isChecked), "isChecked");
/// validate some properties
try
{
chai->eval("print(\"Starting evaluation...\")");
int answer_i = 0;
bool answer_b = false;
//answer_b = chai->eval<bool>("checkBox.isTristate()");
answer_b = chai->eval<bool>("checkBox.isChecked()");
std::cout << "ChaiScript::: " << answer_b << " :: " << answer_i << std::endl;
}
catch(std::exception e)
{
std::cout << "ChaiScript@Exception::: " << e.what() << std::endl;
}
問題は、これが QCheckBox のネイティブ メソッドであるため、"isTristate()" 呼び出しが機能することです。一方、「isChecked()」呼び出しが失敗するのは、これが QAbstractButton クラスから継承されたメソッドであるためだと思います。
私は何を間違っていますか?