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

📄 qdesigner_workbench.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    foreach (QDesignerToolWindow *tw, m_toolWindows) {        QDockWidget *dockWidget = magicalDockWidget(tw);        tw->setVisible(true);        dockWidget->setVisible(m_visibilities.value(tw, true));    }    mw->restoreState(settings.mainWindowState(), 2);    foreach (QDesignerFormWindow *fw, m_formWindows)        m_workspace->addWindow(fw, magicalWindowFlags(fw))->hide();    // will be shown in adjustFormPositions    changeBringToFrontVisiblity(false);    mw->show();    if (!m_initializing)        QMetaObject::invokeMethod(this, "adjustFormPositions", Qt::QueuedConnection);}bool QDesignerWorkbench::eventFilter(QObject *object, QEvent *event){    if (object == m_workspace) {        if (event->type() == QEvent::DragEnter) {            QDragEnterEvent *e = static_cast<QDragEnterEvent*>(event);            if (e->mimeData()->hasFormat("text/uri-list")) {                e->acceptProposedAction();                return true;            }        } else if (event->type() == QEvent::Drop) {            QDropEvent *e = static_cast<QDropEvent*>(event);            if (!e->mimeData()->hasFormat("text/uri-list"))                return false;            foreach (QUrl url, e->mimeData()->urls()) {                QString fileName = url.toLocalFile();                if (fileName.endsWith(".ui"))                    readInForm(url.toLocalFile());                else                    QMessageBox::critical(m_workspace, tr("Opening Form"),                        tr("Cannot open file %1!").arg(fileName));            }            e->acceptProposedAction();            return true;        }    }    return false;}void QDesignerWorkbench::adjustFormPositions(){    if (m_workspace == 0)        return;    QPoint workspace_tl = m_workspace->mapToGlobal(QPoint(0, 0));    foreach (QDesignerFormWindow *fw, m_formWindows) {        QWidget *frame = fw->parentWidget();        if (frame == 0)            continue;        QRect g = m_geometries.value(fw, fw->geometryHint());        frame->move(g.topLeft() - workspace_tl);        fw->resize(g.size());        frame->show();    }}void QDesignerWorkbench::changeBringToFrontVisiblity(bool visible){    QAction *btf = m_actionManager->bringToFrontAction();    QList<QAction *> actionList = m_actionManager->windowActions()->actions();    btf->setVisible(visible);    QAction *sep = actionList.at(actionList.indexOf(btf) - 1);    if (sep->isSeparator())        sep->setVisible(visible);}void QDesignerWorkbench::switchToTopLevelMode(){    if (m_mode == TopLevelMode)        return;    // make sure that the widgetbox is visible iff it is different from neutrol.    if (m_mode != NeutralMode) {        if (QDesignerToolWindow *widgetbox_tool = findToolWindow(core()->widgetBox())) {            if (!widgetbox_tool->action()->isChecked())                widgetbox_tool->action()->trigger();        }    }    switchToNeutralMode();    QPoint desktopOffset = QApplication::desktop()->availableGeometry().topLeft();    m_mode = TopLevelMode;    // The widget box is special, it gets the menubar and gets to be the main widget.    QDesignerToolWindow *widgetBoxWrapper = 0;    if (0 != (widgetBoxWrapper = findToolWindow(core()->widgetBox()))) {        m_core->setTopLevel(widgetBoxWrapper);#ifndef Q_WS_MAC        widgetBoxWrapper->setMenuBar(m_globalMenuBar);        widgetBoxWrapper->action()->setEnabled(false);        widgetBoxWrapper->setSaveSettingsOnClose(true);        qDesigner->setMainWindow(widgetBoxWrapper);        widgetBoxWrapper->setWindowTitle(tr("Qt Designer"));#endif        widgetBoxWrapper->addToolBar(m_editToolBar);        widgetBoxWrapper->addToolBar(m_toolToolBar);        widgetBoxWrapper->addToolBar(m_formToolBar);        widgetBoxWrapper->insertToolBarBreak(m_formToolBar);    }    QDesignerSettings settings;    bool found_visible_window = false;    foreach (QDesignerToolWindow *tw, m_toolWindows) {        tw->setParent(magicalParent(), magicalWindowFlags(tw));        settings.setGeometryFor(tw, tw->geometryHint());        tw->action()->setChecked(tw->isVisible());        found_visible_window |= tw->isVisible();    }    if (!m_toolWindows.isEmpty() && !found_visible_window)        m_toolWindows.first()->show();    changeBringToFrontVisiblity(true);    foreach (QDesignerFormWindow *fw, m_formWindows) {        fw->setParent(magicalParent(), magicalWindowFlags(fw));        QRect g = m_geometries.value(fw, fw->geometryHint());        fw->resize(g.size());        fw->move(g.topLeft() + desktopOffset);        fw->show();    }}QDesignerFormWindow *QDesignerWorkbench::createFormWindow(){    QDesignerFormWindow *formWindow = new QDesignerFormWindow(/*formWindow=*/ 0, this);    if (m_workspace) {        m_workspace->addWindow(formWindow, magicalWindowFlags(formWindow));    } else {        formWindow->setParent(magicalParent(), magicalWindowFlags(formWindow));    }    formWindow->setAttribute(Qt::WA_DeleteOnClose, true);    addFormWindow(formWindow);    QRect g = formWindow->geometryHint();    formWindow->resize(g.size());    formWindow->move(availableGeometry().center() - g.center());    if (m_workspace) {        m_workspace->setActiveWindow(formWindow);    }    return formWindow;}QDesignerFormWindowManagerInterface *QDesignerWorkbench::formWindowManager() const{    return m_core->formWindowManager();}QDesignerFormEditorInterface *QDesignerWorkbench::core() const{    return m_core;}int QDesignerWorkbench::toolWindowCount() const{    return m_toolWindows.count();}QDesignerToolWindow *QDesignerWorkbench::toolWindow(int index) const{    return m_toolWindows.at(index);}int QDesignerWorkbench::formWindowCount() const{    return m_formWindows.count();}QDesignerFormWindow *QDesignerWorkbench::formWindow(int index) const{    return m_formWindows.at(index);}QRect QDesignerWorkbench::availableGeometry() const{    if (m_workspace)        return m_workspace->geometry();    QDesktopWidget *desktop = qDesigner->desktop();    QWidget *window = findToolWindow(core()->widgetBox());    if (window)        return desktop->availableGeometry(desktop->screenNumber(window));    return desktop->availableGeometry(0);}int QDesignerWorkbench::marginHint() const{    return 20;}void QDesignerWorkbench::activateWorkspaceChildWindow(QWidget *widget){    if (QDesignerFormWindow *fw = qobject_cast<QDesignerFormWindow*>(widget)) {        core()->formWindowManager()->setActiveFormWindow(fw->editor());        m_workspace->setActiveWindow(widget);    }}void QDesignerWorkbench::removeToolWindow(QDesignerToolWindow *toolWindow){    int index = m_toolWindows.indexOf(toolWindow);    if (index != -1) {        m_toolWindows.removeAt(index);        m_toolWindowExtras.remove(toolWindow);    }    if (QAction *action = toolWindow->action()) {        m_toolActions->removeAction(action);        m_toolMenu->removeAction(action);    }}void QDesignerWorkbench::removeFormWindow(QDesignerFormWindow *formWindow){    int index = m_formWindows.indexOf(formWindow);    if (index != -1) {        m_formWindows.removeAt(index);        m_formWindowExtras.remove(formWindow);    }    if (QAction *action = formWindow->action()) {        m_windowActions->removeAction(action);        m_windowMenu->removeAction(action);    }    if (formWindowCount() == 0) {        m_actionManager->minimizeAction()->setEnabled(false);        QList<QAction *> actions = m_windowMenu->actions();        for (int i = actions.size() - 1; i >= 0; --i) {            QAction *act = actions.at(i);            if (act->isSeparator()) {                delete act;                break;            }        }    }}void QDesignerWorkbench::initializeCorePlugins(){    QList<QObject*> plugins = QPluginLoader::staticInstances();    plugins += core()->pluginManager()->instances();    foreach (QObject *plugin, plugins) {        if (QDesignerFormEditorPluginInterface *formEditorPlugin = qobject_cast<QDesignerFormEditorPluginInterface*>(plugin)) {            if (!formEditorPlugin->isInitialized())                formEditorPlugin->initialize(core());        }    }}void QDesignerWorkbench::saveSettings() const{    QDesignerSettings settings;    if (m_mode == DockedMode) {        if (qFindChild<QWorkspace *>(qDesigner->mainWindow())) {            settings.saveGeometryFor(qDesigner->mainWindow());            settings.setValue(qDesigner->mainWindow()->objectName() + QLatin1String("/visible"), false);        }    } else {        foreach (QDesignerToolWindow *tw, m_toolWindows) {            settings.saveGeometryFor(tw);        }    }}bool QDesignerWorkbench::readInForm(const QString &fileName) const{    return m_actionManager->readInForm(fileName);}bool QDesignerWorkbench::writeOutForm(QDesignerFormWindowInterface *formWindow, const QString &fileName) const{    return m_actionManager->writeOutForm(formWindow, fileName);}bool QDesignerWorkbench::saveForm(QDesignerFormWindowInterface *frm){    return m_actionManager->saveForm(frm);}QDesignerToolWindow *QDesignerWorkbench::findToolWindow(QWidget *widget) const{    foreach (QDesignerToolWindow *toolWindow, m_toolWindows) {        if (toolWindow->centralWidget() == widget)            return toolWindow;    }    return 0;}QDesignerFormWindow *QDesignerWorkbench::findFormWindow(QWidget *widget) const{    foreach (QDesignerFormWindow *formWindow, m_formWindows) {        if (formWindow->centralWidget() == widget)            return formWindow;    }    return 0;}bool QDesignerWorkbench::handleClose(){    QList<QDesignerFormWindow *> dirtyForms;    foreach (QDesignerFormWindow *w, m_formWindows) {        if (w->editor()->isDirty())            dirtyForms << w;    }    if (dirtyForms.size()) {        if (dirtyForms.size() == 1) {            if (!dirtyForms.at(0)->close()) {                return false;            }        } else {            QMessageBox box(tr("Save Forms?"),                    tr("There are %1 forms with unsaved changes."                        " Do you want to review these changes before quitting?")                    .arg(dirtyForms.size()),                    QMessageBox::Warning,                    QMessageBox::Yes | QMessageBox::Default, QMessageBox::No,                    QMessageBox::Cancel | QMessageBox::Escape, 0);            box.setButtonText(QMessageBox::Yes, tr("Review Changes"));            box.setButtonText(QMessageBox::No, tr("Discard Changes"));            switch (box.exec()) {            case QMessageBox::Cancel:                return false;            case QMessageBox::Yes:               foreach (QDesignerFormWindow *fw, dirtyForms) {                   fw->show();                   fw->raise();                   if (!fw->close()) {                       return false;                   }               }               break;            case QMessageBox::No:              foreach (QDesignerFormWindow *fw, dirtyForms) {                  fw->editor()->setDirty(false);                  fw->setWindowModified(false);              }              break;            }        }    }    foreach (QDesignerFormWindow *fw, m_formWindows)        fw->close();    saveSettings();    return true;}QDesignerActions *QDesignerWorkbench::actionManager() const{    return m_actionManager;}void QDesignerWorkbench::setUIMode(UIMode mode){    switch (mode) {        case TopLevelMode:            switchToTopLevelMode();            break;        case DockedMode:            switchToDockedMode();            break;        default: Q_ASSERT(0);    }}void QDesignerWorkbench::updateWindowMenu(QDesignerFormWindowInterface *fw){    if (!fw)        return;    if (QDesignerFormWindow *dfw = qobject_cast<QDesignerFormWindow *>(fw->parentWidget()))        dfw->action()->setChecked(true);}void QDesignerWorkbench::formWindowActionTriggered(QAction *a){    QWidget *widget = a->parentWidget();    Q_ASSERT(widget != 0);    if (m_mode == DockedMode) {        m_workspace->setActiveWindow(widget);    } else {        widget->setWindowState(widget->windowState() & ~Qt::WindowMinimized);        widget->activateWindow();        widget->raise();    }}void QDesignerWorkbench::showToolBars(){    m_toolToolBar->show();    m_formToolBar->show();    m_editToolBar->show();}void QDesignerWorkbench::closeAllToolWindows(){    foreach (QDesignerToolWindow *tw, m_toolWindows)        tw->hide();}QDockWidget *QDesignerWorkbench::magicalDockWidget(QWidget *widget) const{    if (!m_workspace)        return 0;    QDockWidget *dockWidget = qFindChild<QDockWidget*>(m_workspace->window(), widget->objectName() + QLatin1String("_dock"));    return dockWidget;}

⌨️ 快捷键说明

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