本文整理汇总了C++中QScriptEngine::canEvaluate方法的典型用法代码示例。如果您正苦于以下问题:C++ QScriptEngine::canEvaluate方法的具体用法?C++ QScriptEngine::canEvaluate怎么用?C++ QScriptEngine::canEvaluate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QScriptEngine
的用法示例。
在下文中一共展示了QScriptEngine::canEvaluate方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseJson
QVariant JsonTranslationService::parseJson(const QByteArray &json)
{
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
QString js;
js.reserve(json.size() + 2);
js.append("(").append(QString::fromUtf8(json)).append(")");
static QScriptEngine engine;
if (!engine.canEvaluate(js)) {
m_error = tr("Couldn't parse response from the server because of an error: \"%1\"")
.arg(tr("Can't evaluate JSON data"));
return QVariant();
}
QScriptValue data = engine.evaluate(js);
if (engine.hasUncaughtException()) {
m_error = tr("Couldn't parse response from the server because of an error: \"%1\"")
.arg(engine.uncaughtException().toString());
return QVariant();
}
return data.toVariant();
#else
QJsonParseError err;
QJsonDocument doc = QJsonDocument::fromJson(json, &err);
if (err.error != QJsonParseError::NoError) {
m_error = tr("Couldn't parse response from the server because of an error: \"%1\"")
.arg(err.errorString());
return QVariant();
}
return doc.toVariant();
#endif
}
示例2: startHandle
ImageDataPtr CountPixel::startHandle(ImageDataPtr src1, const ImageDataPtr)
{
QScriptEngine engine;
QString originalQuery = m_listParameters[SCRIPT]->toString();
unsigned long long int total = 0;
auto lambda = [&total, &originalQuery, &engine](unsigned char & r, unsigned char & b, unsigned char & g)
{
QString query = originalQuery;
query.replace("Gr", QString::number(0.33*b + 0.56*g + 0.11*r) );
query.replace("B", QString::number(b) );
query.replace("G", QString::number(g) );
query.replace("R", QString::number(r) );
if( ! engine.canEvaluate(query) )
total = -1;
QScriptValue value = engine.evaluate(query);
total += value.toBool();
};
src1->forEachPixel( lambda);
src1->addResults( m_listParameters[NAME]->toString(), total);
return src1;
}
示例3: checkScript
bool ScriptDialog::checkScript()
{
const QString script = trimmedScript();
if (script.isEmpty())
return true;
QScriptEngine scriptEngine;
if (scriptEngine.canEvaluate(script))
return true;
QMessageBox::warning (this, windowTitle(), tr("Syntax error"));
return false;
}
示例4: checkScript
bool ScriptDialog::checkScript()
{
const QString script = trimmedScript();
if (script.isEmpty())
return true;
QScriptEngine scriptEngine;
if (scriptEngine.canEvaluate(script))
return true;
m_dialogGui->message(this, QDesignerDialogGuiInterface::ScriptDialogMessage, QMessageBox::Warning,
windowTitle(), tr("Syntax error"), QMessageBox::Ok);
return false;
}
示例5: main
int main(int argc, char *argv[])
{
if(argc<3)
{
printf("%s file.ui file.js\n",argv[0]);
return 0;
}
QApplication app(argc, argv);
QScriptEngine engine;
QUiLoader loader;
QFile file(argv[1]);
file.open(QFile::ReadOnly);
QWidget *formWidget = loader.load(&file);
file.close();
QScriptValue scriptWidget = engine.newQObject(formWidget);
engine.globalObject().setProperty("widget", scriptWidget);
QFile ifile(argv[2]);
ifile.open(QFile::ReadOnly);
QByteArray code=ifile.readAll();
ifile.close();
if( !engine.canEvaluate(code) )
{
printf("Error\n");
return 1;
}
engine.evaluate("widget.show()");
QScriptValue result = engine.evaluate(code);
if (engine.hasUncaughtException())
{
int line = engine.uncaughtExceptionLineNumber();
qDebug() << "uncaught exception at line" << line << ":" << result.toString();
}
return app.exec();
}
示例6: rx
QList<BookmarksModel::Bookmark> ChromeImporter::exportBookmarks()
{
QList<BookmarksModel::Bookmark> list;
QString bookmarks = QString::fromUtf8(m_file.readAll());
m_file.close();
QStringList parsedBookmarks;
QRegExp rx("\\{(\\s*)\"date_added(.*)\"(\\s*)\\}", Qt::CaseSensitive);
rx.setMinimal(true);
int pos = 0;
while ((pos = rx.indexIn(bookmarks, pos)) != -1) {
parsedBookmarks << rx.cap(0);
pos += rx.matchedLength();
}
QScriptEngine* scriptEngine = new QScriptEngine();
foreach(QString parsedString, parsedBookmarks) {
parsedString = "(" + parsedString + ")";
if (scriptEngine->canEvaluate(parsedString)) {
QScriptValue object = scriptEngine->evaluate(parsedString);
QString name = object.property("name").toString();
QUrl url = QUrl::fromEncoded(object.property("url").toString().toUtf8());
if (name.isEmpty() || url.isEmpty()) {
continue;
}
BookmarksModel::Bookmark b;
b.folder = "Chrome Import";
b.title = name;
b.url = url;
list.append(b);
}
else {
m_error = true;
m_errorString = BookmarksImportDialog::tr("Cannot evaluate JSON code.");
}
}
示例7: FormulaCheck
void NewExperimentSettingsDialog::FormulaCheck()
{
if (ui->tFormulaInput->toPlainText()=="")
{
QMessageBox::about(this,"Ошибка", QString("<p><h3>Отсутствует формула</h3></p>"));
return;
}
if (haswronWaribles)
{
QMessageBox::about(this,"Ошибка", QString("<p><h3>Введёная формула содержит неверные имена переменных</h3></p>")+
QString("<p><b> Описание ошибки: <i>Проверьте синтаксис или воспользуйтесь справкой</i></b></p>")+
QString("<p><b>Строка: 1")+
QString("; Столбец: ")+QString::number(wrongpos)+QString("</p>") +
QString(this->EvaluateString.left(wrongpos-1)+"<font color=red>"+this->EvaluateString.at(wrongpos-1)+"</font>"+this->EvaluateString.right(this->EvaluateString.length()-wrongpos)));
return;
}
if (!allowPsevdonamesForVaribles)
{
QVector<int> Xnumbers;
for (int i=0;i<FactorNames.count();i++)
{
QString tmp= FactorNames.at(i);
tmp=tmp.toLower().remove("x");
Xnumbers.append(tmp.toInt());
}
qSort(Xnumbers);
if (Xnumbers.at(0)!=1)
{
QMessageBox::about(this,"Ошибка",QString("<p><h3>Введёная формула содержит не все переменные</h3></p>")+
QString("<p><b> Описание ошибки: <i>Отсутствует переменная <font color=red>x1</font></i></b></p>"));
return;
}
for (int i=0;i<Xnumbers.count()-1;i++)
{
if (Xnumbers.at(i+1)>data.FactNum)
{
QMessageBox::about(this,"Ошибка",QString("<p><h3>Введённая формула содержит переменные, отсутствующие в настройках плана эксперимента</h3></p>")+
QString("<p><b> Описание ошибки: <i>Отсутствует переменная <font color=red>x"+QString::number(Xnumbers.at(i)+1)+"</font></i></b></p>"));
return;
}
if (Xnumbers.at(i)!=Xnumbers.at(i+1)-1)
{
QMessageBox::about(this,"Ошибка",QString("<p><h3>Введёная формула содержит не все переменные</h3></p>")+
QString("<p><b> Описание ошибки: <i>Отсутствует переменная <font color=red>x"+QString::number(Xnumbers.at(i)+1)+"</font></i></b></p>"));
return;
}
}//
int FactsInFormula=GetExpressionFactorNames(this->EvaluateString).count();
if (data.FactNum>FactsInFormula)
{
QMessageBox::about(this,"Ошибка",QString("<p><h3>Не все переменные присутствуют в функциональной зависимости</h3></p>"));
return;
}
}
QScriptEngine RunScript;
QScriptSyntaxCheckResult ErrVal=RunScript.checkSyntax(this->EvaluateString);
// Проверка синтаксиса введёной функции
if (ErrVal.state()== QScriptSyntaxCheckResult::Valid)
{ // syntax correct
// Проверка количества введёных факторов
if (this->data.FactNum<2)
{
QMessageBox::about(this,"Ошибка",QString("<p><h3>Введёная формула содержит менее двух переменных</h3></p>")+
QString("<p><b> Описание ошибки: <i>Данная программа разработана для работы с формулами, содержащими более одной переменной</i></b></p>"));
}
else if (!RunScript.canEvaluate(this->EvaluateString))
{
QMessageBox::about(this,"Ошибка",QString("<p><h3>Невозможно вычислить введёную формулу</h3></p>")+
QString("<p><b> Описание ошибки: <i>Проверьте синтаксис или воспользуйтесь справкой</i></b></p>"));
}
else if (saveFactValues())
{
close();
}
}
else
{
// syntax not correct
QString tmp_formula = this->EvaluateString;
int ErrColum=0,ErrLine=0;
if (ErrVal.errorColumnNumber()<1)
ErrColum=1;
else ErrColum= ErrVal.errorColumnNumber();
if (ErrVal.errorLineNumber()<1)
ErrLine=0;
else
ErrLine=ErrVal.errorLineNumber();
QMessageBox::about(this,"Ошибка", QString("<p><h3>Введёная формула содержит ошибки</h3></p>")+
//.........这里部分代码省略.........