本文整理汇总了C++中QDesignerWidgetDataBaseItemInterface::extends方法的典型用法代码示例。如果您正苦于以下问题:C++ QDesignerWidgetDataBaseItemInterface::extends方法的具体用法?C++ QDesignerWidgetDataBaseItemInterface::extends怎么用?C++ QDesignerWidgetDataBaseItemInterface::extends使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QDesignerWidgetDataBaseItemInterface
的用法示例。
在下文中一共展示了QDesignerWidgetDataBaseItemInterface::extends方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: promotionCandidates
QDESIGNER_SHARED_EXPORT WidgetDataBaseItemList
promotionCandidates(const QDesignerWidgetDataBaseInterface *db,
const QString &baseClassName)
{
WidgetDataBaseItemList rc;
// find existing promoted widgets deriving from base.
const int count = db->count();
for (int i = 0; i < count; ++i) {
QDesignerWidgetDataBaseItemInterface *item = db->item(i);
if (item->isPromoted() && item->extends() == baseClassName) {
rc.push_back(item);
}
}
return rc;
}
示例2:
QDesignerWidgetDataBaseItemInterface *QDesignerPromotionDialog::databaseItemAt(const QItemSelection &selected, unsigned &flags) const {
flags = 0;
const QModelIndexList indexes = selected.indexes();
if (indexes.empty())
return 0;
bool referenced;
QDesignerWidgetDataBaseItemInterface *dbItem = m_model->databaseItemAt(indexes.front(), &referenced);
if (dbItem) {
if (referenced)
flags |= Referenced;
// In choose mode, can we promote to the class?
if (m_mode == ModeEditChooseClass && dbItem && dbItem->isPromoted() && dbItem->extends() == m_promotableWidgetClassName)
flags |= CanPromote;
}
return dbItem;
}
示例3: appendDerived
QDESIGNER_SHARED_EXPORT QDesignerWidgetDataBaseItemInterface *
appendDerived(QDesignerWidgetDataBaseInterface *db,
const QString &className, const QString &group,
const QString &baseClassName,
const QString &includeFile,
bool promoted, bool custom)
{
if (debugWidgetDataBase)
qDebug() << "appendDerived " << className << " derived from " << baseClassName;
// Check.
if (className.isEmpty() || baseClassName.isEmpty()) {
qWarning("** WARNING %s called with an empty class names: '%s' extends '%s'.",
Q_FUNC_INFO, className.toUtf8().constData(), baseClassName.toUtf8().constData());
return 0;
}
// Check whether item already exists.
QDesignerWidgetDataBaseItemInterface *derivedItem = 0;
const int existingIndex = db->indexOfClassName(className);
if ( existingIndex != -1)
derivedItem = db->item(existingIndex);
if (derivedItem) {
// Check the existing item for base class mismatch. This will likely
// happen when loading a file written by an instance with missing plugins.
// In that case, just warn and ignore the file properties.
//
// An empty base class indicates that it is not known (for example, for custom plugins).
// In this case, the widget DB is later updated once the widget is created
// by DOM (by querying the metaobject). Suppress the warning.
const QString existingBaseClass = derivedItem->extends();
if (existingBaseClass.isEmpty() || baseClassName == existingBaseClass)
return derivedItem;
// Warn about mismatches
designerWarning(QCoreApplication::translate("WidgetDataBase",
"The file contains a custom widget '%1' whose base class (%2)"
" differs from the current entry in the widget database (%3)."
" The widget database is left unchanged.").
arg(className, baseClassName, existingBaseClass));
return derivedItem;
}
// Create this item, inheriting its base properties
const int baseIndex = db->indexOfClassName(baseClassName);
if (baseIndex == -1) {
if (debugWidgetDataBase)
qDebug() << "appendDerived failed due to missing base class";
return 0;
}
const QDesignerWidgetDataBaseItemInterface *baseItem = db->item(baseIndex);
derivedItem = WidgetDataBaseItem::clone(baseItem);
// Sort of hack: If base class is QWidget, we most likely
// do not want to inherit the container attribute.
static const QString qWidgetName = QLatin1String("QWidget");
if (baseItem->name() == qWidgetName)
derivedItem->setContainer(false);
// set new props
derivedItem->setName(className);
derivedItem->setGroup(group);
derivedItem->setCustom(custom);
derivedItem->setPromoted(promoted);
derivedItem->setExtends(baseClassName);
derivedItem->setIncludeFile(includeFile);
db->append(derivedItem);
return derivedItem;
}