本文整理汇总了C++中QVariant::typeName方法的典型用法代码示例。如果您正苦于以下问题:C++ QVariant::typeName方法的具体用法?C++ QVariant::typeName怎么用?C++ QVariant::typeName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QVariant
的用法示例。
在下文中一共展示了QVariant::typeName方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: editItem
void ParameterEdit::editItem()
{
if(_table->currentSelection() != -1) {
bool do_update = false;
int r = _table->currentRow();
Q3CheckTableItem * ctItem = (Q3CheckTableItem*)_table->item(r, 0);
if(ctItem == 0)
return;
bool active = ctItem->isChecked();
QString name = _table->text(r, 1);
QVariant var = _params[name];
BoolEdit * be = 0;
IntEdit * ie = 0;
DoubleEdit * de = 0;
StringEdit * se = 0;
ListEdit * le = 0;
switch(var.type()) {
case QVariant::Bool:
be = new BoolEdit(this);
be->_name->setText(name);
be->_active->setChecked(active);
be->setValue(var.toBool());
if(be->exec() == QDialog::Accepted) {
var = QVariant(be->value(), 0);
active = be->_active->isChecked();
do_update = TRUE;
}
delete be;
be = 0;
break;
case QVariant::Int:
ie = new IntEdit(this);
ie->_name->setText(name);
ie->_active->setChecked(active);
ie->_value->setText(QString::number(var.toInt()));
if(ie->exec() == QDialog::Accepted) {
var = QVariant(ie->_value->text().toInt());
active = ie->_active->isChecked();
do_update = TRUE;
}
delete ie;
ie = 0;
break;
case QVariant::Double:
de = new DoubleEdit(this);
de->_name->setText(name);
de->_active->setChecked(active);
de->_value->setText(QString::number(var.toDouble()));
if(de->exec() == QDialog::Accepted) {
var = QVariant(de->_value->text().toDouble());
active = de->_active->isChecked();
do_update = TRUE;
}
delete de;
de = 0;
break;
case QVariant::String:
se = new StringEdit(this);
se->_name->setText(name);
se->_active->setChecked(active);
se->_value->setText(var.toString());
if(se->exec() == QDialog::Accepted) {
var = QVariant(se->_value->text());
active = se->_active->isChecked();
do_update = TRUE;
}
delete se;
se = 0;
break;
case QVariant::List:
le = new ListEdit(this);
le->_name->setText(name);
le->_active->setChecked(active);
le->setList(var.toList());
if(le->exec() == QDialog::Accepted) {
var = QVariant(le->list());
active = le->_active->isChecked();
do_update = TRUE;
}
delete le;
le = 0;
break;
default:
QMessageBox::warning(this, tr("Warning"), QString(tr("I do not know how to edit QVariant type %1.")).arg(var.typeName()));
};
if(do_update) {
_params[name] = var;
ctItem->setChecked(active);
_table->setText(r, 1, name);
_table->setText(r, 2, var.typeName());
_table->setText(r, 3, var.toString());
}
}
}
示例2: evaluation
void evaluation()
{
QFETCH( QString, string );
QFETCH( bool, evalError );
QFETCH( QVariant, result );
QgsExpression exp( string );
QCOMPARE( exp.hasParserError(), false );
if ( exp.hasParserError() )
qDebug() << exp.parserErrorString();
QVariant res = exp.evaluate();
if ( exp.hasEvalError() )
qDebug() << exp.evalErrorString();
if ( res.type() != result.type() )
{
qDebug() << "got " << res.typeName() << " instead of " << result.typeName();
}
//qDebug() << res.type() << " " << result.type();
//qDebug() << "type " << res.typeName();
QCOMPARE( exp.hasEvalError(), evalError );
QCOMPARE( res.type(), result.type() );
switch ( res.type() )
{
case QVariant::Invalid:
break; // nothing more to check
case QVariant::Int:
QCOMPARE( res.toInt(), result.toInt() );
break;
case QVariant::Double:
QCOMPARE( res.toDouble(), result.toDouble() );
break;
case QVariant::String:
QCOMPARE( res.toString(), result.toString() );
break;
case QVariant::Date:
QCOMPARE( res.toDate(), result.toDate() );
break;
case QVariant::DateTime:
QCOMPARE( res.toDateTime(), result.toDateTime() );
break;
case QVariant::Time:
QCOMPARE( res.toTime(), result.toTime() );
break;
case QVariant::UserType:
{
if ( res.userType() == qMetaTypeId<QgsExpression::Interval>() )
{
QgsExpression::Interval inter = res.value<QgsExpression::Interval>();
QgsExpression::Interval gotinter = result.value<QgsExpression::Interval>();
QCOMPARE( inter.seconds(), gotinter.seconds() );
}
else
{
QFAIL( "unexpected user type" );
}
break;
}
default:
Q_ASSERT( false ); // should never happen
}
}
示例3: property
void QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp, QVariant &where) const
{
if (!isValid || !canMakeCalls()) { // can't make calls
where.clear();
return;
}
// is this metatype registered?
const char *expectedSignature = "";
if (int(mp.type()) != QMetaType::QVariant) {
expectedSignature = QDBusMetaType::typeToSignature(where.userType());
if (expectedSignature == 0) {
qWarning("QDBusAbstractInterface: type %s must be registered with Qt D-Bus before it can be "
"used to read property %s.%s",
mp.typeName(), qPrintable(interface), mp.name());
lastError = QDBusError(QDBusError::Failed,
QString::fromLatin1("Unregistered type %1 cannot be handled")
.arg(QLatin1String(mp.typeName())));
where.clear();
return;
}
}
// try to read this property
QDBusMessage msg = QDBusMessage::createMethodCall(service, path,
QLatin1String(DBUS_INTERFACE_PROPERTIES),
QLatin1String("Get"));
QDBusMessagePrivate::setParametersValidated(msg, true);
msg << interface << QString::fromUtf8(mp.name());
QDBusMessage reply = connection.call(msg, QDBus::Block, timeout);
if (reply.type() != QDBusMessage::ReplyMessage) {
lastError = QDBusError(reply);
where.clear();
return;
}
if (reply.signature() != QLatin1String("v")) {
QString errmsg = QLatin1String("Invalid signature `%1' in return from call to "
DBUS_INTERFACE_PROPERTIES);
lastError = QDBusError(QDBusError::InvalidSignature, errmsg.arg(reply.signature()));
where.clear();
return;
}
QByteArray foundSignature;
const char *foundType = 0;
QVariant value = qvariant_cast<QDBusVariant>(reply.arguments().at(0)).variant();
if (value.userType() == where.userType() || mp.userType() == QMetaType::QVariant
|| (expectedSignature[0] == 'v' && expectedSignature[1] == '\0')) {
// simple match
where = value;
return;
}
if (value.userType() == qMetaTypeId<QDBusArgument>()) {
QDBusArgument arg = qvariant_cast<QDBusArgument>(value);
foundType = "user type";
foundSignature = arg.currentSignature().toLatin1();
if (foundSignature == expectedSignature) {
// signatures match, we can demarshall
QDBusMetaType::demarshall(arg, where.userType(), where.data());
return;
}
} else {
foundType = value.typeName();
foundSignature = QDBusMetaType::typeToSignature(value.userType());
}
// there was an error...
QString errmsg = QLatin1String("Unexpected `%1' (%2) when retrieving property `%3.%4' "
"(expected type `%5' (%6))");
lastError = QDBusError(QDBusError::InvalidSignature,
errmsg.arg(QString::fromLatin1(foundType),
QString::fromLatin1(foundSignature),
interface,
QString::fromUtf8(mp.name()),
QString::fromLatin1(mp.typeName()),
QString::fromLatin1(expectedSignature)));
where.clear();
return;
}
示例4: toVALUE
VALUE RubyType<QVariant>::toVALUE(const QVariant& v)
{
#ifdef QROSS_RUBY_VARIANT_DEBUG
qrossdebug( QString("RubyType<QVariant>::toVALUE variant.toString=%1 variant.typeid=%2 variant.typeName=%3").arg(v.toString()).arg(v.type()).arg(v.typeName()) );
#endif
switch( v.type() ) {
case QVariant::Int:
return RubyType<int>::toVALUE(v.toInt());
case QVariant::UInt:
return RubyType<uint>::toVALUE(v.toUInt());
case QVariant::Double:
return RubyType<double>::toVALUE(v.toDouble());
case QVariant::ByteArray:
return RubyType<QByteArray>::toVALUE(v.toByteArray());
case QVariant::String:
return RubyType<QString>::toVALUE(v.toString());
case QVariant::Bool:
return RubyType<bool>::toVALUE(v.toBool());
case QVariant::StringList:
return RubyType<QStringList>::toVALUE(v.toStringList());
case QVariant::Map:
return RubyType<QVariantMap>::toVALUE(v.toMap());
case QVariant::List:
return RubyType<QVariantList>::toVALUE(v.toList());
case QVariant::LongLong:
return RubyType<qlonglong>::toVALUE(v.toLongLong());
case QVariant::ULongLong:
return RubyType<qlonglong>::toVALUE(v.toULongLong());
case QVariant::Size:
return RubyType<QSize>::toVALUE(v.toSize());
case QVariant::SizeF:
return RubyType<QSizeF>::toVALUE(v.toSizeF());
case QVariant::Point:
return RubyType<QPoint>::toVALUE(v.toPoint());
case QVariant::PointF:
return RubyType<QPointF>::toVALUE(v.toPointF());
case QVariant::Rect:
return RubyType<QRect>::toVALUE(v.toRect());
case QVariant::RectF:
return RubyType<QRectF>::toVALUE(v.toRectF());
case QVariant::Color:
return RubyType<QColor>::toVALUE( v.value<QColor>() );
case QVariant::Url:
return RubyType<QUrl>::toVALUE(v.toUrl());
case QVariant::Date:
return RubyType<QDate>::toVALUE( v.value<QDate>() );
case QVariant::Time:
return RubyType<QTime>::toVALUE( v.value<QTime>() );
case QVariant::DateTime:
return RubyType<QDateTime>::toVALUE( v.value<QDateTime>() );
case QVariant::Invalid: {
#ifdef QROSS_RUBY_VARIANT_DEBUG
qrossdebug( QString("RubyType<QVariant>::toVALUE variant=%1 is QVariant::Invalid. Returning Qnil.").arg(v.toString()) );
#endif
return Qnil;
} // fall through
case QVariant::UserType: {
#ifdef QROSS_RUBY_VARIANT_DEBUG
qrossdebug( QString("RubyType<QVariant>::toVALUE variant=%1 is QVariant::UserType. Trying to cast now.").arg(v.toString()) );
#endif
} // fall through
default: {
if( strcmp(v.typeName(),"float") == 0 ) {
#ifdef QROSS_RUBY_VARIANT_DEBUG
qrossdebug( QString("RubyType<QVariant>::toVALUE Casting '%1' to double").arg(v.typeName()) );
#endif
return RubyType<double>::toVALUE(v.toDouble());
}
if( strcmp(v.typeName(),"Qross::VoidList") == 0 ) {
VoidList list = v.value<VoidList>();
Qross::MetaTypeHandler* handler = Qross::Manager::self().metaTypeHandler(list.typeName);
#ifdef QROSS_RUBY_VARIANT_DEBUG
qrossdebug( QString("RubyType<QVariant>::toVALUE Casting '%1' to QList<%2> with %3 items, hasHandler=%4").arg(v.typeName()).arg(list.typeName.constData()).arg(list.count()).arg(handler ? "true" : "false") );
#endif
QVariantList l;
foreach(void* ptr, list) {
if( handler ) {
l << handler->callHandler(ptr);
}
else {
QVariant v;
v.setValue(ptr);
l << v;
}
}
return RubyType<QVariantList>::toVALUE(l);
}
if( qVariantCanConvert< Qross::Object::Ptr >(v) ) {
#ifdef QROSS_RUBY_VARIANT_DEBUG
qrossdebug( QString("RubyType<QVariant>::toPyObject Casting '%1' to Qross::Object::Ptr").arg(v.typeName()) );
#endif
//.........这里部分代码省略.........
示例5: variantToElement
//.........这里部分代码省略.........
for (j = 0;
((j < stringNodeList.length()) && (it != stringList.end()));
j++)
{
// get the current string element
stringElem = stringNodeList.item(j).toElement();
// set it to the current string
variantToElement(QVariant(*it), stringElem);
// iterate to the next string
++it;
}
// more nodes in previous stringlist then current, remove excess nodes
if (stringNodeList.count() > stringList.count())
{
while (j < stringNodeList.count())
e.removeChild(stringNodeList.item(j).toElement());
}
else if (j <stringList.count())
{
while (it != stringList.end())
{
// create a new element
stringElem = m_doc.createElement("string");
// set it to the currentstring
variantToElement(QVariant(*it), stringElem);
// append it to the current element
e.appendChild(stringElem);
// iterate to the next string
++it;
}
}
}
break;
#if QT_VERSION >= 300
case QVariant::KeySequence:
e.setTagName("key");
e.setAttribute("sequence", (QString)v.toKeySequence());
break;
#endif
case QVariant::ByteArray: // this is only for [u]int64_t
{
e.setTagName("uint64");
QByteArray ba = v.toByteArray();
// make sure this only handles [u]int64_t's
if (ba.size() != sizeof(uint64_t))
{
qWarning("Don't know how to persist variant of type: %s (%d) (size=%d)!",
v.typeName(), v.type(), ba.size());
ok = false;
break;
}
// convert the data back into a uint64_t
uint64_t num = *(uint64_t*)ba.data();
QChar buff[33];
QChar* p = &buff[32];
const char* digitSet = "0123456789abcdef";
int len = 0;
// construct the string
do
{
*--p = digitSet[((int)(num%16))];
num = num >> 4; // divide by 16
len++;
} while ( num );
// store it in a QString
QString storage;
storage.setUnicode(p, len);
// set the value
e.setAttribute("value", storage);
}
break;
#if 0
case QVariant::List:
case QVaraint::Map:
#endif
default:
qWarning("Don't know how to persist variant of type: %s (%d)!",
v.typeName(), v.type());
ok = false;
break;
}
return ok;
}
示例6: encodeData
//.........这里部分代码省略.........
break;
case(QVariant::String) :
encoded = encodeString(data.toString());
break;
case(QVariant::ByteArray) :
encoded = encodeByteArray(data.toByteArray());
break;
case(QVariant::List) :
{
encoded = QString::fromLatin1("[") + optionalIndentedNewLine;
QVariantList list = data.toList();
for (int i = 0; i < list.count(); ++i)
{
if (i) encoded += QString::fromLatin1(",") + optionalIndentedNewLine;
encoded += encodeData(list.at(i), options, errorMessage, indentation, indentedLinePrefix);
if (errorMessage && !errorMessage->isNull())
return QString();
}
encoded += optionalNewLine + QString::fromLatin1("]");
}
break;
case(QVariant::StringList) :
{
encoded = QString::fromLatin1("[") + optionalIndentedNewLine;
QStringList list = data.toStringList();
for (int i = 0; i < list.count(); ++i)
{
if (i) encoded += QString::fromLatin1(",") + optionalIndentedNewLine;
encoded += encodeData(list.at(i), options, errorMessage, indentation, indentedLinePrefix);
if (errorMessage && !errorMessage->isNull())
return QString();
}
encoded += optionalNewLine + QString::fromLatin1("]");
}
break;
case(QVariant::Map) :
{
encoded = QString::fromLatin1("{") + optionalIndentedNewLine;
QVariantMap map = data.toMap();
QVariantMap::iterator i;
bool first = true;
for (i = map.begin(); i != map.end(); ++i)
{
if (!first)
encoded += QString::fromLatin1(",") + optionalIndentedNewLine;
first = false;
encoded += encodeString(i.key());
encoded += options.testFlag(Compact) ? QString::fromLatin1(":") : QString::fromLatin1(" : ");
encoded += encodeData(i.value(), options, errorMessage, indentation, indentedLinePrefix);
if (errorMessage && !errorMessage->isNull())
return QString();
}
encoded += optionalNewLine + QString::fromLatin1("}");
}
break;
case(QVariant::Hash) :
{
encoded = QString::fromLatin1("{") + optionalIndentedNewLine;
QVariantHash hash = data.toHash();
QVariantHash::iterator i;
bool first = true;
for (i = hash.begin(); i != hash.end(); ++i)
{
if (!first)
encoded += QString::fromLatin1(",") + optionalIndentedNewLine;
first = false;
encoded += encodeString(i.key());
encoded += options.testFlag(Compact) ? QString::fromLatin1(":") : QString::fromLatin1(" : ");
encoded += encodeData(i.value(), options, errorMessage, indentation, indentedLinePrefix);
if (errorMessage && !errorMessage->isNull())
return QString();
}
encoded += optionalNewLine + QString::fromLatin1("}");
}
break;
case(QVariant::Invalid) :
encoded = QString::fromLatin1("null");
break;
default:
if (!options.testFlag(EncodeUnknownTypesAsNull))
{
if (errorMessage)
*errorMessage = QString::fromLatin1("Can't encode this type of data to JSON: %1")
.arg(data.typeName());
return QString();
}
encoded = QString::fromLatin1("null");
break;
}
return encoded;
}
示例7: out
//! [0]
QDataStream out(...);
QVariant v(123); // The variant now contains an int
int x = v.toInt(); // x = 123
out << v; // Writes a type tag and an int to out
v = QVariant("hello"); // The variant now contains a QByteArray
v = QVariant(tr("hello")); // The variant now contains a QString
int y = v.toInt(); // y = 0 since v cannot be converted to an int
QString s = v.toString(); // s = tr("hello") (see QObject::tr())
out << v; // Writes a type tag and a QString to out
...
QDataStream in(...); // (opening the previously written stream)
in >> v; // Reads an Int variant
int z = v.toInt(); // z = 123
qDebug("Type is %s", // prints "Type is int"
v.typeName());
v = v.toInt() + 100; // The variant now hold the value 223
v = QVariant(QStringList());
//! [0]
//! [1]
QVariant x, y(QString()), z(QString(""));
x.convert(QVariant::Int);
// x.isNull() == true
// y.isNull() == true, z.isNull() == false
//! [1]
//! [2]
QVariant variant;
示例8: setting_changed
void Settings::setting_changed(const QString& module_name, const QString& name, const QVariant& value)
{
if (!map_.contains(module_name))
{
cgogn_log_debug("Settings::setting_changed") << "Trying to modify a setting of a non-existing module \"" << module_name.toStdString() << "\".";
} else
{
if (!map_[module_name].contains(name))
{
cgogn_log_debug("Settings::setting_changed") << "Trying to modify a non-existing setting \"" << name.toStdString() << "\" of the module \"" << module_name.toStdString() << "\".";
} else {
QVariant& v = map_[module_name][name];
if (v.type() != value.type())
{
cgogn_log_debug("Settings::setting_changed") << "Cannot replace a setting of type \"" << v.typeName() << "\" by another setting of type \"" << value.typeName() << "\".";
} else {
v = value;
}
}
}
}
示例9: checkType
// convert the variant to the given type and return true if it worked.
// if the type is not known, guess it from the variant and set.
// return false if conversion failed.
static bool checkType(QVariant &var, QDBusType &type)
{
if (!type.isValid()) {
// guess it from the variant
type = QDBusType::guessFromVariant(var);
return type.isValid();
}
int id = var.userType();
if (type.dbusType() == DBUS_TYPE_VARIANT) {
// this is a non symmetrical operation:
// nest a QVariant if we want variant and it isn't so
if (id != QDBusTypeHelper<QVariant>::id()) {
QVariant tmp = var;
var = QDBusTypeHelper<QVariant>::toVariant(tmp);
}
return true;
}
switch (id) {
case QVariant::Bool:
case QMetaType::Short:
case QMetaType::UShort:
case QMetaType::UChar:
case QVariant::Int:
case QVariant::UInt:
case QVariant::LongLong:
case QVariant::ULongLong:
case QVariant::Double:
case QVariant::String:
if (type.isBasic())
// QVariant can handle this on its own
return true;
// cannot handle this
qWarning("Invalid conversion from %s to '%s'", var.typeName(),
type.dbusSignature().constData());
var.clear();
return false;
case QVariant::ByteArray:
// make sure it's an "ARRAY of BYTE"
if (type.qvariantType() != QVariant::ByteArray) {
qWarning("Invalid conversion from %s to '%s'", var.typeName(),
type.dbusSignature().constData());
var.clear();
return false;
}
return true;
case QVariant::StringList:
// make sure it's "ARRAY of STRING"
if (type.qvariantType() != QVariant::StringList) {
qWarning("Invalid conversion from %s to '%s'", var.typeName(),
type.dbusSignature().constData());
var.clear();
return false;
}
return true;
case QVariant::List:
// could be either struct or array
if (type.dbusType() != DBUS_TYPE_ARRAY && type.dbusType() != DBUS_TYPE_STRUCT) {
qWarning("Invalid conversion from %s to '%s'", var.typeName(),
type.dbusSignature().constData());
var.clear();
return false;
}
return true;
case QVariant::Map:
if (!type.isMap()) {
qWarning("Invalid conversion from %s to '%s'", var.typeName(),
type.dbusSignature().constData());
var.clear();
return false;
}
return true;
case QVariant::Invalid: {
// create an empty variant
void *null = 0;
var = QVariant(type.qvariantType(), null);
break;
}
default:
if (id == QDBusTypeHelper<QVariant>::id()) {
// if we got here, it means the match above for DBUS_TYPE_VARIANT didn't work
qWarning("Invalid conversion from nested variant to '%s'",
type.dbusSignature().constData());
return false;
} else if (type.dbusType() == DBUS_TYPE_ARRAY) {
int subType = type.arrayElement().dbusType();
//.........这里部分代码省略.........
示例10: editItem
void ParameterEdit::editItem(int row)
{
bool do_update = false;
bool active = _table->item(row, 0)->checkState() == Qt::Checked;
QString name = _table->item(row, 1)->text();
QVariant var = _params[name];
BoolEdit * be = 0;
IntEdit * ie = 0;
DoubleEdit * de = 0;
StringEdit * se = 0;
ListEdit * le = 0;
switch(var.type()) {
case QVariant::Bool:
be = new BoolEdit(this);
be->_name->setText(name);
be->_active->setChecked(active);
be->setValue(var.toBool());
if(be->exec() == QDialog::Accepted) {
var = QVariant((bool)be->value());
active = be->_active->isChecked();
do_update = TRUE;
}
delete be;
be = 0;
break;
case QVariant::Int:
ie = new IntEdit(this);
ie->_name->setText(name);
ie->_active->setChecked(active);
ie->_value->setText(QString::number(var.toInt()));
if(ie->exec() == QDialog::Accepted) {
var = QVariant(ie->_value->text().toInt());
active = ie->_active->isChecked();
do_update = TRUE;
}
delete ie;
ie = 0;
break;
case QVariant::Double:
de = new DoubleEdit(this);
de->_name->setText(name);
de->_active->setChecked(active);
de->_value->setText(QString::number(var.toDouble()));
if(de->exec() == QDialog::Accepted) {
var = QVariant(de->_value->text().toDouble());
active = de->_active->isChecked();
do_update = TRUE;
}
delete de;
de = 0;
break;
case QVariant::String:
se = new StringEdit(this);
se->_name->setText(name);
se->_active->setChecked(active);
se->_value->setText(var.toString());
if(se->exec() == QDialog::Accepted) {
var = QVariant(se->_value->text());
active = se->_active->isChecked();
do_update = TRUE;
}
delete se;
se = 0;
break;
case QVariant::List:
le = new ListEdit(this);
le->_name->setText(name);
le->_active->setChecked(active);
le->setList(var.toList());
if(le->exec() == QDialog::Accepted) {
var = QVariant(le->list());
active = le->_active->isChecked();
do_update = TRUE;
}
delete le;
le = 0;
break;
default:
QMessageBox::warning(this, tr("Warning"), QString(tr("I do not know how to edit QVariant type %1.")).arg(var.typeName()));
};
if(do_update) {
_params[name] = var;
_table->item(row, 0)->setCheckState((active ? Qt::Checked : Qt::Unchecked));
_table->item(row, 1)->setText(name);
_table->item(row, 2)->setText(var.typeName());
_table->item(row, 3)->setText(var.toString());
}
}
示例11: editItem
void ListEdit::editItem()
{
Q3ListBoxItem * item = _list->selectedItem();
if(item) {
if(item->rtti() == QListBoxVariant::RTTI) {
QListBoxVariant * lbvar = (QListBoxVariant*)item;
QVariant var = lbvar->variant();
BoolEdit * be = 0;
IntEdit * ie = 0;
DoubleEdit * de = 0;
StringEdit * se = 0;
ListEdit * le = 0;
switch(var.type()) {
case QVariant::Bool:
be = new BoolEdit(this);
be->_lblName->hide();
be->_name->hide();
be->_active->hide();
be->setValue(var.toBool());
if(be->exec() == QDialog::Accepted) {
lbvar->setVariant(QVariant(be->value(), 0));
}
delete be;
be = 0;
break;
case QVariant::Int:
ie = new IntEdit(this);
ie->_lblName->hide();
ie->_name->hide();
ie->_active->hide();
ie->_value->setText(QString::number(var.toInt()));
if(ie->exec() == QDialog::Accepted) {
lbvar->setVariant(QVariant(ie->_value->text().toInt()));
}
delete ie;
ie = 0;
break;
case QVariant::Double:
de = new DoubleEdit(this);
de->_lblName->hide();
de->_name->hide();
de->_active->hide();
de->_value->setText(QString::number(var.toDouble()));
if(de->exec() == QDialog::Accepted) {
lbvar->setVariant(QVariant(de->_value->text().toDouble()));
}
delete de;
de = 0;
break;
case QVariant::String:
se = new StringEdit(this);
se->_lblName->hide();
se->_name->hide();
se->_active->hide();
se->_value->setText(var.toString());
if(se->exec() == QDialog::Accepted) {
lbvar->setVariant(QVariant(se->_value->text()));
}
delete se;
se = 0;
break;
case QVariant::List:
le = new ListEdit(this);
le->_lblName->hide();
le->_name->hide();
le->_active->hide();
le->setList(var.toList());
if(le->exec() == QDialog::Accepted) {
lbvar->setVariant(QVariant(le->list()));
}
delete le;
le = 0;
break;
default:
QMessageBox::warning(this, tr("Warning"), QString(tr("I do not know how to edit QVariant type %1.")).arg(var.typeName()));
};
} else {
QMessageBox::warning(this, tr("Warning"), tr("The item you selected is not a QListBoxVariant item. I do not know what to do."));
}
}
}
示例12: newItem
void ParameterEdit::newItem()
{
NewVariant newVar(this);
if(newVar.exec() == QDialog::Accepted) {
QString varType = newVar._type->currentText();
QString name = newVar._name->text();
bool active = false;
if(_params.contains(name)) {
QMessageBox::warning(this, tr("Name already exists"), tr("The name for the parameter you specified already exists in the list."));
}
BoolEdit * be = 0;
IntEdit * ie = 0;
DoubleEdit * de = 0;
StringEdit * se = 0;
ListEdit * le = 0;
if(varType == tr("String")) {
se = new StringEdit(this);
se->_name->setText(name);
if(se->exec() == QDialog::Accepted) {
_params[name] = QVariant(se->_value->text());
active = se->_active->isChecked();
}
delete se;
se = 0;
} else if(varType == tr("Int")) {
ie = new IntEdit(this);
ie->_name->setText(name);
if(ie->exec() == QDialog::Accepted) {
_params[name] = QVariant(ie->_value->text().toInt());
active = ie->_active->isChecked();
}
delete ie;
ie = 0;
} else if(varType == tr("Double")) {
de = new DoubleEdit(this);
de->_name->setText(name);
if(de->exec() == QDialog::Accepted) {
_params[name] = QVariant(de->_value->text().toDouble());
active = de->_active->isChecked();
}
delete de;
de = 0;
} else if(varType == tr("Bool")) {
be = new BoolEdit(this);
be->_name->setText(name);
if(be->exec() == QDialog::Accepted) {
_params[name] = QVariant((bool)be->value());
active = be->_active->isChecked();
}
delete be;
be = 0;
} else if(varType == tr("List")) {
le = new ListEdit(this);
le->_name->setText(name);
if(le->exec() == QDialog::Accepted) {
_params[name] = QVariant(le->list());
active = le->_active->isChecked();
}
delete le;
le = 0;
} else {
QMessageBox::warning(this, tr("Unknown Type"), QString(tr("I do not understand the type %1.")).arg(varType));
return;
}
int r = _table->rowCount();
_table->setRowCount(r+1);
QTableWidgetItem * ctItem = 0;
ctItem = new QTableWidgetItem();
ctItem->setFlags(Qt::ItemIsUserCheckable);
ctItem->setCheckState((active ? Qt::Checked : Qt::Unchecked));
_table->setItem(r, 0, ctItem);
_table->setItem(r, 1, new QTableWidgetItem(name));
QVariant var = _params[name];
_table->setItem(r, 2, new QTableWidgetItem(var.typeName()));
_table->setItem(r, 3, new QTableWidgetItem(var.toString()));
}
}
示例13: isa
bool LispPlugin::isa(QVariant ltok, const char* typeName) {
return QString::compare(typeName, ltok.typeName());
}
示例14: variantToElement
//.........这里部分代码省略.........
{
e.setTagName("font");
QFont f(v.value<QFont>());
e.setAttribute("family", f.family());
e.setAttribute("pointsize", f.pointSize());
e.setAttribute("bold", boolString(f.bold()));
e.setAttribute("italic", boolString(f.italic()));
e.setAttribute("underline", boolString(f.underline()));
e.setAttribute("strikeout", boolString(f.strikeOut()));
}
break;
case QVariant::SizePolicy:
{
e.setTagName("sizepolicy");
QSizePolicy sp(v.value<QSizePolicy>());
e.setAttribute("hsizetype", sp.horData());
e.setAttribute("vsizetype", sp.verData());
e.setAttribute("horstretch", sp.horStretch());
e.setAttribute("verstretch", sp.verStretch());
}
break;
case QVariant::Cursor:
e.setTagName("cursor");
e.setAttribute("shape", v.value<QCursor>().shape());
break;
case QVariant::StringList:
{
e.setTagName("stringlist");
int32_t j;
QDomNode n;
QDomNodeList stringNodeList = e.elementsByTagName("string");
QDomElement stringElem;
QStringList stringList = v.toStringList();
QStringList::Iterator it = stringList.begin();
for (j = 0;
((j < (int32_t)stringNodeList.length()) && (it != stringList.end()));
j++)
{
// get the current string element
stringElem = stringNodeList.item(j).toElement();
// set it to the current string
variantToElement(QVariant(*it), stringElem);
// iterate to the next string
++it;
}
// more nodes in previous stringlist then current, remove excess nodes
if (stringNodeList.count() > stringList.count())
{
while (j < (int32_t)stringNodeList.count())
e.removeChild(stringNodeList.item(j).toElement());
}
else if (j < (int32_t)stringList.count())
{
while (it != stringList.end())
{
// create a new element
stringElem = m_doc.createElement("string");
// set it to the currentstring
variantToElement(QVariant(*it), stringElem);
// append it to the current element
e.appendChild(stringElem);
// iterate to the next string
++it;
}
}
}
break;
case QVariant::KeySequence:
e.setTagName("key");
e.setAttribute("sequence", (QString)v.value<QKeySequence>().toString());
break;
case QVariant::ByteArray: // this is only for [u]int64_t
{
e.setTagName("data");
// set the value
e.setAttribute("value", getStringFromByteArray(v.toByteArray()));
}
break;
default:
qWarning("Don't know how to persist variant of type: %s (%d)!",
v.typeName(), v.type());
ok = false;
break;
}
return ok;
}
示例15: waitForFinished
//.........这里部分代码省略.........
QDBusError object, this function will instead set an error code
indicating a type mismatch.
*/
/*!
\fn bool QDBusReply::isValid() const
Returns true if no error occurred; otherwise, returns false.
\sa error()
*/
/*!
\fn QDBusReply::error()
Returns the error code that was returned from the remote function call. If the remote call did
not return an error (i.e., if it succeeded), then the QDBusError object that is returned will
not be a valid error code (QDBusError::isValid() will return false).
\sa isValid()
*/
/*!
\fn QDBusReply::value() const
Returns the remote function's calls return value. If the remote call returned with an error,
the return value of this function is undefined and may be undistinguishable from a valid return
value.
This function is not available if the remote call returns \c void.
*/
/*!
\fn QDBusReply::operator Type() const
Returns the same as value().
This function is not available if the remote call returns \c void.
*/
/*!
\internal
Fills in the QDBusReply data \a error and \a data from the reply message \a reply.
*/
void qDBusReplyFill(const QDBusMessage &reply, QDBusError &error, QVariant &data)
{
error = reply;
if (error.isValid()) {
data = QVariant(); // clear it
return;
}
if (reply.arguments().count() >= 1 && reply.arguments().at(0).userType() == data.userType()) {
data = reply.arguments().at(0);
return;
}
const char *expectedSignature = QDBusMetaType::typeToSignature(data.userType());
const char *receivedType = 0;
QByteArray receivedSignature;
if (reply.arguments().count() >= 1) {
if (reply.arguments().at(0).userType() == QDBusMetaTypeId::argument) {
// compare signatures instead
QDBusArgument arg = qvariant_cast<QDBusArgument>(reply.arguments().at(0));
receivedSignature = arg.currentSignature().toLatin1();
if (receivedSignature == expectedSignature) {
// matched. Demarshall it
QDBusMetaType::demarshall(arg, data.userType(), data.data());
return;
}
} else {
// not an argument and doesn't match?
int type = reply.arguments().at(0).userType();
receivedType = QVariant::typeToName(QVariant::Type(type));
receivedSignature = QDBusMetaType::typeToSignature(type);
}
}
// error
if (receivedSignature.isEmpty())
receivedSignature = "no signature";
QString errorMsg;
if (receivedType) {
errorMsg = QString::fromLatin1("Unexpected reply signature: got \"%1\" (%4), "
"expected \"%2\" (%3)")
.arg(QLatin1String(receivedSignature),
QLatin1String(expectedSignature),
QLatin1String(data.typeName()),
QLatin1String(receivedType));
} else {
errorMsg = QString::fromLatin1("Unexpected reply signature: got \"%1\", "
"expected \"%2\" (%3)")
.arg(QLatin1String(receivedSignature),
QLatin1String(expectedSignature),
QLatin1String(data.typeName()));
}
error = QDBusError(QDBusError::InvalidSignature, errorMsg);
data = QVariant(); // clear it
}