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

📄 formwindow.cpp

📁 QT 开发环境里面一个很重要的文件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    cmd->init(widgets, core()->widgetFactory()->widgetOfContainer(w));    return cmd;}void FormWindow::breakLayout(){    QWidget *w = currentWidget() ? currentWidget() : mainContainer();    if (LayoutInfo::layoutType(m_core, w) != LayoutInfo::NoLayout ||         w->parentWidget() && LayoutInfo::layoutType(m_core, w->parentWidget()) != LayoutInfo::NoLayout) {        breakLayout(w);        return;    } else {        QList<QWidget*> widgets = selectedWidgets();        QListIterator<QWidget*> it(widgets);        while (it.hasNext()) {            QWidget *w = it.next();            if (LayoutInfo::layoutType(m_core, w) != LayoutInfo::NoLayout ||                 w->parentWidget() && LayoutInfo::layoutType(m_core, w->parentWidget()) != LayoutInfo::NoLayout)                break;        }        if (w) {            breakLayout(w);            return;        }    }    w = mainContainer();    if (LayoutInfo::layoutType(m_core, w) != LayoutInfo::NoLayout ||         w->parentWidget() && LayoutInfo::layoutType(m_core, w->parentWidget()) != LayoutInfo::NoLayout)        breakLayout(w);}void FormWindow::beginCommand(const QString &description){    m_commandHistory->beginMacro(description);}void FormWindow::endCommand(){    m_commandHistory->endMacro();}void FormWindow::raiseWidgets(){    QList<QWidget*> widgets = selectedWidgets();    simplifySelection(&widgets);    foreach (QWidget *widget, widgets) {        widget->raise();    }}void FormWindow::lowerWidgets(){    QList<QWidget*> widgets = selectedWidgets();    simplifySelection(&widgets);    foreach (QWidget *widget, widgets) {        widget->lower();    }}bool FormWindow::handleMouseButtonDblClickEvent(QWidget *, QWidget *managedWidget, QMouseEvent *e){    e->accept();    clearSelection(false);    selectWidget(managedWidget);    emit activated(managedWidget);    return true;}void FormWindow::finishContextMenu(QWidget *w, QWidget *, QContextMenuEvent *e){    e->accept();    QDesignerTaskMenuExtension *taskMenu = qt_extension<QDesignerTaskMenuExtension*>(core()->extensionManager(), w);    QMenu *menu = createPopupMenu(w);    if (menu && taskMenu) {        QList<QAction *> acts = taskMenu->taskActions();        if (QDesignerPromotedWidget *promoted = qobject_cast<QDesignerPromotedWidget*>(w)) {            QDesignerTaskMenuExtension *baseTaskMenu =                qt_extension<QDesignerTaskMenuExtension*>(core()->extensionManager(),                                                          promoted->child());            if (baseTaskMenu) {                // "inherit" proper actions from base class's task menu                QList<QAction *> baseActs = baseTaskMenu->taskActions();                QList<QAction *>::iterator it;                for (it = baseActs.begin(); it != baseActs.end(); ) {                    // special case: don't want the "Promote to custom widget" action                    if ((*it)->objectName() == QLatin1String("__qt__promoteToCustomWidgetAction")) {                        it = baseActs.erase(it);                        continue;                    }                    // inherit the action only if it is not "reimplemented"                    // by the promoted widget's task menu                    QList<QAction *>::iterator it2;                    bool inherit = true;                    for (it2 = acts.begin(); it2 != acts.end(); ++it2) {                        if ((*it)->text() == (*it2)->text()) {                            inherit = false;                            break;                        }                    }                    if (inherit)                        ++it;                    else                        it = baseActs.erase(it);                }                if (!baseActs.isEmpty()) {                    // prepend the inherited actions to the action list                    QAction *sep = new QAction(menu);                    sep->setSeparator(true);                    baseActs.append(sep);                    for (int i = 0; i < baseActs.size(); ++i)                        acts.insert(i, baseActs.at(i));                }            }        }        QAction *sep = new QAction(menu);        sep->setSeparator(true);        acts.append(sep);        menu->insertActions(menu->actions().at(0), acts);    }    if (menu) {        emit contextMenuRequested(menu, w);        menu->exec(e->globalPos());        delete menu;    }}bool FormWindow::handleContextMenu(QWidget *, QWidget *managedWidget, QContextMenuEvent *e){    e->accept();    bool selected = isWidgetSelected(managedWidget);    if (selected == false) {        clearSelection(false);        selectWidget(managedWidget);        raiseChildSelections(managedWidget); // raise selections and select widget        QMetaObject::invokeMethod(core()->formWindowManager(), "slotUpdateActions");    }    if (!isMainContainer(managedWidget)) { // press on a child widget        // if widget is laid out, find the first non-laid out super-widget        QWidget *realWidget = managedWidget; // but store the original one        QMainWindow *mw = qobject_cast<QMainWindow*>(mainContainer());        if (mw && mw->centralWidget() == realWidget) {            finishContextMenu(managedWidget, this, e);        } else {            finishContextMenu(realWidget, realWidget, e);        }    } else {        finishContextMenu(mainContainer(), mainContainer(), e);    }    return true;}void FormWindow::setContents(QIODevice *dev){    bool saved = updatesEnabled();    setUpdatesEnabled(false);    clearSelection();    if (mainContainer()) {        core()->metaDataBase()->remove(mainContainer());        delete mainContainer();        m_mainContainer = 0;    }    m_insertedWidgets.clear();    m_widgets.clear();    emit changed();    QDesignerResource r(this);    QWidget *w = r.load(dev, this);    if (w == 0) {        setFileName(QString());        w = core()->widgetFactory()->createWidget(QLatin1String("QWidget"), this);        w->resize(400, 300);    }    setMainContainer(w);    setUpdatesEnabled(saved);}void FormWindow::setContents(const QString &contents){    QByteArray data = contents.toUtf8();    QBuffer b(&data);    if (b.open(QIODevice::ReadOnly))        setContents(&b);}void FormWindow::layoutHorizontalContainer(QWidget *w){    if (w == this)        w = mainContainer();    w = core()->widgetFactory()->containerOfWidget(w);    QList<QObject*> l = w->children();    if (l.isEmpty())        return;    QList<QWidget*> widgets;    QListIterator<QObject*> it(l);    while (it.hasNext()) {        QObject* o = it.next();        if (!o->isWidgetType())            continue;        QWidget *widget = static_cast<QWidget*>(o);        if (widget->isVisibleTo(this) && isManaged(widget))            widgets.append(widget);    }    LayoutCommand *cmd = new LayoutCommand(this);    cmd->init(mainContainer(), widgets, LayoutInfo::HBox, w);    clearSelection(false);    commandHistory()->push(cmd);}void FormWindow::layoutVerticalContainer(QWidget *w){    if (w == this)        w = mainContainer();    w = core()->widgetFactory()->containerOfWidget(w);    QList<QObject*> l = w->children();    if (l.isEmpty())        return;    QListIterator<QObject*> it(l);    QList<QWidget*> widgets;    while (it.hasNext()) {        QObject* o = it.next();        if (!o->isWidgetType())            continue;        QWidget *widget = static_cast<QWidget*>(o);        if (widget->isVisibleTo(this) && isManaged(widget))            widgets.append(widget);    }    LayoutCommand *cmd = new LayoutCommand(this);    cmd->init(mainContainer(), widgets, LayoutInfo::VBox, w);    clearSelection(false);    commandHistory()->push(cmd);}void FormWindow::layoutGridContainer(QWidget *w){    if (w == this)        w = mainContainer();    w = core()->widgetFactory()->containerOfWidget(w);    QList<QObject*> l = w->children();    if (l.isEmpty())        return;    QList<QWidget*> widgets;    QListIterator<QObject*> it(l);    while (it.hasNext()) {        QObject* o = it.next();        if (!o->isWidgetType())            continue;        QWidget *widget = static_cast<QWidget*>(o);        if (widget->isVisibleTo(this) && isManaged(widget))            widgets.append(widget);    }    LayoutCommand *cmd = new LayoutCommand(this);    cmd->init(mainContainer(), widgets, LayoutInfo::Grid, w);    clearSelection(false);    commandHistory()->push(cmd);}bool FormWindow::hasInsertedChildren(QWidget *widget) const // ### move{    if (QDesignerContainerExtension *container = qt_extension<QDesignerContainerExtension*>(core()->extensionManager(), widget)) {        widget = container->widget(container->currentIndex());    }    QList<QWidget*> l = widgets(widget);    foreach (QWidget *child, l) {        if (isManaged(child) && !LayoutInfo::isWidgetLaidout(core(), child) && child->isVisibleTo(const_cast<FormWindow*>(this)))            return true;    }    return false;}void FormWindow::layoutHorizontalSplit(){    LayoutCommand *cmd = new LayoutCommand(this);    cmd->init(mainContainer(), selectedWidgets(), LayoutInfo::HBox, /*layoutBase=*/ 0, /*splitter=*/ true);    clearSelection(false);    commandHistory()->push(cmd);}void FormWindow::layoutVerticalSplit(){    LayoutCommand *cmd = new LayoutCommand(this);    cmd->init(mainContainer(), selectedWidgets(), LayoutInfo::VBox, /*layoutBase=*/ 0, /*splitter=*/ true);    clearSelection(false);    commandHistory()->push(cmd);}QMenu *FormWindow::createPopupMenu(QWidget *w){    QDesignerFormWindowManagerInterface *manager = core()->formWindowManager();    bool isFormWindow = qobject_cast<FormWindow*>(w);    QMenu *popup = new QMenu(this);    if (QDesignerPromotedWidget *promoted = qobject_cast<QDesignerPromotedWidget*>(w))        w = promoted->child();    if (qobject_cast<QDesignerTabWidget*>(w)) {        QDesignerTabWidget *tabWidget = static_cast<QDesignerTabWidget*>(w);        if (tabWidget->count()) {            popup->addAction(tabWidget->actionDeletePage());        }        QMenu *insertPageMenu = popup->addMenu(tr("Insert Page"));        insertPageMenu->addAction(tabWidget->actionInsertPageAfter());        insertPageMenu->addAction(tabWidget->actionInsertPage());        popup->addSeparator();    } else if (qobject_cast<QDesignerStackedWidget*>(w)) {        QDesignerStackedWidget *stackedWidget = static_cast<QDesignerStackedWidget*>(w);        if (stackedWidget->count()) {            popup->addAction(stackedWidget->actionDeletePage());        }        QMenu *insertPageMenu = popup->addMenu(tr("Insert Page"));        insertPageMenu->addAction(stackedWidget->actionInsertPageAfter());        insertPageMenu->addAction(stackedWidget->actionInsertPage());        popup->addAction(stackedWidget->actionNextPage());        popup->addAction(stackedWidget->actionPreviousPage());        if (stackedWidget->count() > 1) {            popup->addAction(stackedWidget->actionChangePageOrder());        }        popup->addSeparator();    } else if (qobject_cast<QDesignerToolBox*>(w)) {        QDesignerToolBox *toolBox = static_cast<QDesignerToolBox*>(w);        if (toolBox->count()) {            popup->addAction(toolBox->actionDeletePage());        }        QMenu *insertPageMenu = popup->addMenu(tr("Insert Page"));        insertPageMenu->addAction(toolBox->actionInsertPageAfter());        insertPageMenu->addAction(toolBox->actionInsertPage());        if (toolBox->count() > 1) {            popup->addAction(toolBox->actionChangePageOrder());        }        popup->addSeparator();    }    if (!isFormWindow) {        popup->addAction(manager->actionCut());        popup->addAction(manager->actionCopy());    }    popup->addAction(manager->actionPaste());    popup->addAction(manager->actionSelectAll());    if (!isFormWindow) {        popup->addAction(manager->actionDelete());    }    popup->addSeparator();    QMenu *menu = popup->addMenu(tr("Lay out"));    menu->addAction(manager->actionAdjustSize());    menu->addAction(manager->actionHorizontalLayout());    menu->addAction(manager->actionVerticalLayout());    menu->addAction(manager->actionGridLayout());    if (!isFormWindow) {        menu->addAction(manager->actionSplitHorizontal());        menu->addAction(manager->actionSplitVertical());    }    menu->addAction(manager->actionBreakLayout());    return popup;}void FormWindow::resizeEvent(QResizeEvent *e){/*    if (editMode() == TabOrderEditMode)        repositionOrderIndicators(); */    m_geometryChangedTimer->start(10);    QWidget::resizeEvent(e);}/*!  Maps \a pos in \a w's coordinates to the form's coordinate system.  This is the equivalent to mapFromGlobal(w->mapToGlobal(pos)) but  avoids the two roundtrips to the X-Server on Unix/X11. */QPoint FormWindow::mapToForm(const QWidget *w, const QPoint &pos) const{    QPoint p = pos;    const QWidget* i = w;    while (i && !i->isWindow() && !isMainContainer(i)) {        p = i->mapToParent(p);        i = i->parentWidget();    }    return mapFromGlobal(w->mapToGlobal(pos));}bool FormWindow::canBeBuddy(QWidget *w) const // ### rename me.{    if (QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(core()->extensionManager(), w)) {        int index = sheet->indexOf(QLatin1String("focusPolicy"));        if (index != -1) {            bool ok = false;            Qt::FocusPolicy q = (Qt::FocusPolicy) Utils::valueOf(sheet->property(index), &ok);            return ok && q != Qt::NoFocus;        }    }    return false;}QWidget *FormWindow::findContainer(QWidget *w, bool excludeLayout) const{    if (!isChildOf(w, this)        || const_cast<const QWidget *>(w) == this)        return 0;    QDesignerWidgetFactoryInterface *widgetFactory = core()->widgetFactory();    QDesignerWidgetDataBaseInterface *widgetDataBase = core()->widgetDataBase();    QDesignerMetaDataBaseInterface *metaDataBase = core()->metaDataBase();    QWidget *container = widgetFactory->containerOfWidget(mainContainer()); // default parent for new widget is the formwindow    if (!isMainContainer(w)) { // press was not on formwindow, check if we can find another parent        while (w) {            if (qobject_cast<InvisibleWidget*>(w) || !metaDataBase->item(w)) {                w = w->parentWidget();                continue;

⌨️ 快捷键说明

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