formwindow_widgetstack.cpp
来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 221 行
CPP
221 行
/******************************************************************************** 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.******************************************************************************/#include "formwindow_widgetstack.h"#include <QtDesigner/QDesignerFormWindowToolInterface>#include <QtGui/QWidget>#include <QtGui/qevent.h>#include <QtGui/QAction>#include <QtGui/QHBoxLayout>#include <QtCore/qdebug.h>using namespace qdesigner_internal;FormWindowWidgetStack::FormWindowWidgetStack(QWidget *parent) : QWidget(parent), m_current_index(-1){ QHBoxLayout *l = new QHBoxLayout(this); l->setMargin(0); l->setSpacing(0);}FormWindowWidgetStack::~FormWindowWidgetStack(){}int FormWindowWidgetStack::count() const{ return m_tools.count();}QDesignerFormWindowToolInterface *FormWindowWidgetStack::currentTool() const{ return tool(m_current_index);}void FormWindowWidgetStack::setCurrentTool(int index){ if (index < 0 || index >= count()) { qDebug("FormWindowWidgetStack::setCurrentTool(): invalid index: %d", index); return; } if (index == m_current_index) return; if (m_current_index != -1) m_tools.at(m_current_index)->deactivated(); if (m_current_index > 0) { // we don't hide the form editor QWidget *w = m_tools.at(m_current_index)->editor(); if (w != 0) w->hide(); } m_current_index = index; QDesignerFormWindowToolInterface *tool = m_tools.at(m_current_index); tool->activated(); QWidget *w = tool->editor(); if (w != 0) { if (w->rect() != rect()) w->setGeometry(rect()); m_tools.at(0)->editor()->raise(); w->show(); w->raise(); } emit currentToolChanged(index);}void FormWindowWidgetStack::setSenderAsCurrentTool(){ QDesignerFormWindowToolInterface *tool = 0; QAction *action = qobject_cast<QAction*>(sender()); if (action == 0) { qDebug("FormWindowWidgetStack::setSenderAsCurrentTool(): sender is not a QAction"); return; } foreach (QDesignerFormWindowToolInterface *t, m_tools) { if (action == t->action()) { tool = t; break; } } if (tool == 0) { qDebug("FormWindowWidgetStack::setSenderAsCurrentTool(): unknown tool"); return; } setCurrentTool(tool);}int FormWindowWidgetStack::indexOf(QDesignerFormWindowToolInterface *tool) const{ return m_tools.indexOf(tool);}void FormWindowWidgetStack::setCurrentTool(QDesignerFormWindowToolInterface *tool){ int index = indexOf(tool); if (index == -1) { qDebug("FormWindowWidgetStack::setCurrentTool(): unknown tool"); return; } setCurrentTool(index);}void FormWindowWidgetStack::addTool(QDesignerFormWindowToolInterface *tool){ if (QWidget *w = tool->editor()) { w->setParent(this); if (layout()->isEmpty()) layout()->addWidget(w); if (!m_tools.isEmpty()) // we don't hide the form editor w->hide(); } m_tools.append(tool); connect(tool->action(), SIGNAL(triggered()), this, SLOT(setSenderAsCurrentTool()));}void FormWindowWidgetStack::resizeEvent(QResizeEvent *event){ QWidget::resizeEvent(event); QRect r = QRect(0, 0, event->size().width(), event->size().height()); // We always resize the widget tool QDesignerFormWindowToolInterface *widget_tool = tool(0); if (widget_tool != 0 && widget_tool->editor() != 0) widget_tool->editor()->setGeometry(r); QDesignerFormWindowToolInterface *cur_tool = currentTool(); if (cur_tool == widget_tool) return; if (cur_tool != 0 && cur_tool->editor() != 0) cur_tool->editor()->setGeometry(r);}QDesignerFormWindowToolInterface *FormWindowWidgetStack::tool(int index) const{ if (index < 0 || index >= count()) return 0; return m_tools.at(index);}int FormWindowWidgetStack::currentIndex() const{ return m_current_index;}QWidget *FormWindowWidgetStack::defaultEditor() const{ if (m_tools.isEmpty()) return 0; return m_tools.at(0)->editor();}QSize FormWindowWidgetStack::sizeHint() const{ if (QWidget *editor = defaultEditor()) return editor->sizeHint(); return QWidget::sizeHint();}QSize FormWindowWidgetStack::minimumSizeHint() const{ if (QWidget *editor = defaultEditor()) return editor->minimumSizeHint(); return QWidget::minimumSizeHint();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?