⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractformbuilder.cpp

📁 QT 开发环境里面一个很重要的文件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        case QVariant::Date: {            DomDate *dom = new DomDate();            QDate date = qvariant_cast<QDate>(v);            dom->setElementYear(date.year());            dom->setElementMonth(date.month());            dom->setElementDay(date.day());            dom_prop->setElementDate(dom);        } break;        case QVariant::Time: {            DomTime *dom = new DomTime();            QTime time = qvariant_cast<QTime>(v);            dom->setElementHour(time.hour());            dom->setElementMinute(time.minute());            dom->setElementSecond(time.second());            dom_prop->setElementTime(dom);        } break;        case QVariant::DateTime: {            DomDateTime *dom = new DomDateTime();            QDateTime dateTime = qvariant_cast<QDateTime>(v);            dom->setElementHour(dateTime.time().hour());            dom->setElementMinute(dateTime.time().minute());            dom->setElementSecond(dateTime.time().second());            dom->setElementYear(dateTime.date().year());            dom->setElementMonth(dateTime.date().month());            dom->setElementDay(dateTime.date().day());            dom_prop->setElementDateTime(dom);        } break;        case QVariant::Url: {            DomUrl *dom = new DomUrl();            QUrl url = v.toUrl();            DomString *str = new DomString();            str->setText(url.toString());            dom->setElementString(str);            dom_prop->setElementUrl(dom);        } break;        case QVariant::Pixmap:        case QVariant::Icon: {            DomResourcePixmap *r = new DomResourcePixmap;            QString icon_path;            QString qrc_path;            if (v.type() == QVariant::Icon) {                QIcon icon = qvariant_cast<QIcon>(v);                icon_path = iconToFilePath(icon);                qrc_path = iconToQrcPath(icon);            } else {                QPixmap pixmap = qvariant_cast<QPixmap>(v);                icon_path = pixmapToFilePath(pixmap);                qrc_path = pixmapToQrcPath(pixmap);            }            if (qrc_path.isEmpty())                icon_path = workingDirectory().relativeFilePath(icon_path);            else                qrc_path = workingDirectory().relativeFilePath(qrc_path);			icon_path = icon_path.replace(QLatin1Char('\\'), QLatin1Char('/'));			qrc_path = qrc_path.replace(QLatin1Char('\\'), QLatin1Char('/'));            r->setText(icon_path);            if (!qrc_path.isEmpty())                r->setAttributeResource(qrc_path);            if (v.type() == QVariant::Icon)                dom_prop->setElementIconSet(r);            else                dom_prop->setElementPixmap(r);        } break;        case QVariant::StringList: {            DomStringList *sl = new DomStringList;            sl->setElementString(qvariant_cast<QStringList>(v));            dom_prop->setElementStringList(sl);        } break;        default: {            qWarning("support for property `%s' of type `%d' not implemented yet!!",                pname.toUtf8().data(), v.type());        } break;    }    dom_prop->setAttributeName(pname);    // ### dom_prop->setAttributeStdset(true);    if (dom_prop->kind() == DomProperty::Unknown) {        delete dom_prop;        dom_prop = 0;    }    return dom_prop;}/*!    \internal*/QList<DomProperty*> QAbstractFormBuilder::computeProperties(QObject *obj){    QList<DomProperty*> lst;    const QMetaObject *meta = obj->metaObject();    QHash<QByteArray, bool> properties;    for(int i=0; i<meta->propertyCount(); ++i)        properties.insert(meta->property(i).name(), true);    QList<QByteArray> propertyNames = properties.keys();    for(int i=0; i<propertyNames.size(); ++i) {        QString pname = QString::fromUtf8(propertyNames.at(i));        QMetaProperty prop = meta->property(meta->indexOfProperty(pname.toUtf8()));        if (!prop.isWritable() || !checkProperty(obj, QLatin1String(prop.name())))            continue;        QVariant v = prop.read(obj);        DomProperty *dom_prop = 0;        if (v.type() == QVariant::Int) {            dom_prop = new DomProperty();            if (prop.isFlagType())                qWarning("flags property not supported yet!!");            if (prop.isEnumType()) {                QString scope = QString::fromUtf8(prop.enumerator().scope());                if (scope.size())                    scope += QString::fromUtf8("::");                QString e = QString::fromUtf8(prop.enumerator().valueToKey(v.toInt()));                if (e.size())                    dom_prop->setElementEnum(scope + e);            } else                dom_prop->setElementNumber(v.toInt());            dom_prop->setAttributeName(pname);        } else {            dom_prop = createProperty(obj, pname, v);        }        if (!dom_prop || dom_prop->kind() == DomProperty::Unknown)            delete dom_prop;        else            lst.append(dom_prop);    }    return lst;}/*!    \internal*/bool QAbstractFormBuilder::toBool(const QString &str){    return str.toLower() == QLatin1String("true");}/*!    \internal*/QHash<QString, DomProperty*> QAbstractFormBuilder::propertyMap(const QList<DomProperty*> &properties){    QHash<QString, DomProperty*> map;    foreach (DomProperty *p, properties)        map.insert(p->attributeName(), p);    return map;}/*!    \internal*/bool QAbstractFormBuilder::checkProperty(QObject *obj, const QString &prop) const{    Q_UNUSED(obj);    Q_UNUSED(prop);    return true;}/*!    \internal*/QString QAbstractFormBuilder::toString(const DomString *str){    return str ? str->text() : QString();}/*!    \internal*/void QAbstractFormBuilder::applyTabStops(QWidget *widget, DomTabStops *tabStops){    if (!tabStops)        return;    QWidget *lastWidget = 0;    QStringList l = tabStops->elementTabStop();    for (int i=0; i<l.size(); ++i) {        QString name = l.at(i);        QWidget *child = qFindChild<QWidget*>(widget, name);        if (!child) {            qWarning("'%s' isn't a valid widget\n", name.toUtf8().data());            continue;        }        if (i == 0) {            lastWidget = qFindChild<QWidget*>(widget, name);            continue;        } else if (!child || !lastWidget) {            continue;        }        QWidget::setTabOrder(lastWidget, child);        lastWidget = qFindChild<QWidget*>(widget, name);    }}/*!    \internal*/DomCustomWidgets *QAbstractFormBuilder::saveCustomWidgets(){    return 0;}/*!    \internal*/DomTabStops *QAbstractFormBuilder::saveTabStops(){    return 0;}/*!    \internal*/DomResources *QAbstractFormBuilder::saveResources(){    return 0;}/*!    \internal*/void QAbstractFormBuilder::saveTreeWidgetExtraInfo(QTreeWidget *treeWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget){    Q_UNUSED(ui_parentWidget);    QList<DomColumn*> columns;    // save the header    for (int c = 0; c<treeWidget->columnCount(); ++c) {        DomColumn *column = new DomColumn;        QList<DomProperty*> properties;        // property text        DomProperty *ptext = new DomProperty;        DomString *str = new DomString;        str->setText(treeWidget->headerItem()->text(c));        ptext->setAttributeName(QLatin1String("text"));        ptext->setElementString(str);        properties.append(ptext);        QIcon icon = treeWidget->headerItem()->icon(c);        if (!icon.isNull()) {            QString iconPath = iconToFilePath(icon);            QString qrcPath = iconToQrcPath(icon);            DomProperty *p = new DomProperty;            DomResourcePixmap *pix = new DomResourcePixmap;            if (!qrcPath.isEmpty())                pix->setAttributeResource(qrcPath);            pix->setText(iconPath);            p->setAttributeName(QLatin1String("icon"));            p->setElementIconSet(pix);            properties.append(p);        }        column->setElementProperty(properties);        columns.append(column);    }    ui_widget->setElementColumn(columns);    QList<DomItem *> items = ui_widget->elementItem();    QQueue<QPair<QTreeWidgetItem *, DomItem *> > pendingQueue;    for (int i = 0; i < treeWidget->topLevelItemCount(); i++)        pendingQueue.enqueue(qMakePair(treeWidget->topLevelItem(i), (DomItem *)0));    while (!pendingQueue.isEmpty()) {        QPair<QTreeWidgetItem *, DomItem *> pair = pendingQueue.dequeue();        QTreeWidgetItem *item = pair.first;        DomItem *parentDomItem = pair.second;        DomItem *currentDomItem = new DomItem;        QList<DomProperty*> properties;        for (int c = 0; c < treeWidget->columnCount(); c++) {            DomProperty *ptext = new DomProperty;            DomString *str = new DomString;            str->setText(item->text(c));            ptext->setAttributeName(QLatin1String("text"));            ptext->setElementString(str);            properties.append(ptext);            QIcon icon = item->icon(c);            if (!icon.isNull()) {                QString iconPath = iconToFilePath(icon);                QString qrcPath = iconToQrcPath(icon);                DomProperty *p = new DomProperty;                DomResourcePixmap *pix = new DomResourcePixmap;                if (!qrcPath.isEmpty())                    pix->setAttributeResource(qrcPath);                pix->setText(iconPath);                p->setAttributeName(QLatin1String("icon"));                p->setElementIconSet(pix);                properties.append(p);            }        }        currentDomItem->setElementProperty(properties);        if (parentDomItem) {            QList<DomItem *> childrenItems = parentDomItem->elementItem();            childrenItems.append(currentDomItem);            parentDomItem->setElementItem(childrenItems);        } else            items.append(currentDomItem);        for (int i = 0; i < item->childCount(); i++)            pendingQueue.enqueue(qMakePair(item->child(i), currentDomItem));    }    ui_widget->setElementItem(items);}/*!    \internal*/void QAbstractFormBuilder::saveTableWidgetExtraInfo(QTableWidget *tableWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget){    Q_UNUSED(ui_parentWidget);    // save the horizontal header    QList<DomColumn*> columns;    for (int c = 0; c < tableWidget->columnCount(); c++) {        DomColumn *column = new DomColumn;        QList<DomProperty*> properties;        QTableWidgetItem *item = tableWidget->horizontalHeaderItem(c);        if (item) {            // property text            DomProperty *ptext = new DomProperty;            DomString *str = new DomString;            str->setText(item->text());            ptext->setAttributeName(QLatin1String("text"));            ptext->setElementString(str);            properties.append(ptext);            QIcon icon = item->icon();            if (!icon.isNull()) {                QString iconPath = iconToFilePath(icon);                QString qrcPath = iconToQrcPath(icon);                DomProperty *p = new DomProperty;                DomResourcePixmap *pix = new DomResourcePixmap;                if (!qrcPath.isEmpty())                    pix->setAttributeResource(qrcPath);                pix->setText(iconPath);                p->setAttributeName(QLatin1Strin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -