formwindowbase.cpp

来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 197 行

CPP
197
字号
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the Qt Designer of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************//*TRANSLATOR qdesigner_internal::FormWindowBase*/#include "formwindowbase_p.h"#include "connectionedit_p.h"#include "qdesigner_command_p.h"#include <QtDesigner/QDesignerFormEditorInterface>#include <QtDesigner/QDesignerContainerExtension>#include <QtDesigner/QExtensionManager>#include <QtCore/qdebug.h>#include <QtGui/QMenu>namespace qdesigner_internal {Grid FormWindowBase::m_defaultGrid;FormWindowBase::FormWindowBase(QWidget *parent, Qt::WindowFlags flags) :    QDesignerFormWindowInterface(parent, flags),    m_feature(DefaultFeature),    m_grid(m_defaultGrid),    m_hasFormGrid(false){    syncGridFeature();}QVariantMap FormWindowBase::formData(){    QVariantMap rc;    if (m_hasFormGrid)        m_grid.addToVariantMap(rc, true);    return rc;}void FormWindowBase::setFormData(const QVariantMap &vm){    Grid formGrid;    m_hasFormGrid = formGrid.fromVariantMap(vm);    if (m_hasFormGrid)         m_grid = formGrid;}QPoint FormWindowBase::grid() const{    return QPoint(m_grid.deltaX(), m_grid.deltaY());}void FormWindowBase::setGrid(const QPoint &grid){    m_grid.setDeltaX(grid.x());    m_grid.setDeltaY(grid.y());}bool FormWindowBase::hasFeature(Feature f) const{    return f & m_feature;}static void recursiveUpdate(QWidget *w){    w->update();    const QObjectList &l = w->children();    const QObjectList::const_iterator cend = l.constEnd();    for (QObjectList::const_iterator it = l.constBegin(); it != cend; ++it) {        if (QWidget *w = qobject_cast<QWidget*>(*it))            recursiveUpdate(w);    }}void FormWindowBase::setFeatures(Feature f){    m_feature = f;    const bool enableGrid = f & GridFeature;    m_grid.setVisible(enableGrid);    m_grid.setSnapX(enableGrid);    m_grid.setSnapY(enableGrid);    emit featureChanged(f);    recursiveUpdate(this);}FormWindowBase::Feature FormWindowBase::features() const{    return m_feature;}bool FormWindowBase::gridVisible() const{    return m_grid.visible() && currentTool() == 0;}void FormWindowBase::syncGridFeature(){    if (m_grid.snapX() || m_grid.snapY())        m_feature |= GridFeature;    else        m_feature &= ~GridFeature;}void FormWindowBase::setDesignerGrid(const  Grid& grid){    m_grid = grid;    syncGridFeature();    recursiveUpdate(this);}void FormWindowBase::setDefaultDesignerGrid(const  Grid& grid){    m_defaultGrid = grid;}QMenu *FormWindowBase::initializePopupMenu(QWidget * /*managedWidget*/){    return 0;}QWidget *FormWindowBase::widgetUnderMouse(const QPoint &formPos, WidgetUnderMouseMode /* wum */){    // widget_under_mouse might be some temporary thing like the dropLine. We need    // the actual widget that's part of the edited GUI.    QWidget *rc = widgetAt(formPos);    if (!rc || qobject_cast<ConnectionEdit*>(rc))        return 0;    if (QWidget *container = findContainer(rc, false))        if (QDesignerContainerExtension *c = qt_extension<QDesignerContainerExtension*>(core()->extensionManager(), container))            rc = c->widget(c->currentIndex());    return rc;}void FormWindowBase::deleteWidgetList(const QWidgetList &widget_list){    switch (widget_list.size()) {    case 0:        break;    case 1: {        commandHistory()->beginMacro(tr("Delete '%1'").arg(widget_list.front()->objectName()));        emit widgetRemoved(widget_list.front());        DeleteWidgetCommand *cmd = new DeleteWidgetCommand(this);        cmd->init(widget_list.front());        commandHistory()->push(cmd);        commandHistory()->endMacro();    }        break;    default:        commandHistory()->beginMacro(tr("Delete"));        foreach (QWidget *w, widget_list) {            emit widgetRemoved(w);            DeleteWidgetCommand *cmd = new DeleteWidgetCommand(this);            cmd->init(w);            commandHistory()->push(cmd);        }        commandHistory()->endMacro();        break;    }}}

⌨️ 快捷键说明

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