📄 qcolumnviewgrip.cpp
字号:
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the QtGui module 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.******************************************************************************/#ifndef QT_NO_QCOLUMNVIEW#include "qcolumnviewgrip_p.h"#include <qstyleoption.h>#include <qpainter.h>#include <qbrush.h>#include <qevent.h>#include <qdebug.h>/* \internal class QColumnViewGrip QColumnViewGrip is created to go inside QAbstractScrollArea's corner. When the mouse it moved it will resize the scroll area and emit's a signal. *//* \internal \fn void QColumnViewGrip::gripMoved() Signal that is emitted when the grip moves the parent widget. *//*! Creates a new QColumnViewGrip with the given \a parent to view a model. Use setModel() to set the model.*/QColumnViewGrip::QColumnViewGrip(QWidget *parent): QWidget(*new QColumnViewGripPrivate, parent, 0){#ifndef QT_NO_CURSOR setCursor(Qt::SplitHCursor);#endif}/*! \internal*/QColumnViewGrip::QColumnViewGrip(QColumnViewGripPrivate & dd, QWidget *parent, Qt::WFlags f): QWidget(dd, parent, f){}/*! Destroys the view.*/QColumnViewGrip::~QColumnViewGrip(){}/*! Attempt to resize the parent object by \a offset returns the amount of offset that it was actually able to resized*/int QColumnViewGrip::moveGrip(int offset){ QWidget *parentWidget = (QWidget*)parent(); // first resize the parent int oldWidth = parentWidget->width(); int newWidth = oldWidth; if (isRightToLeft()) newWidth -= offset; else newWidth += offset; newWidth = qMax(parentWidget->minimumWidth(), newWidth); parentWidget->resize(newWidth, parentWidget->height()); // Then have the view move the widget int realOffset = parentWidget->width() - oldWidth; int oldX = parentWidget->x(); if (realOffset != 0) emit gripMoved(realOffset); if (isRightToLeft()) realOffset = -1 * (oldX - parentWidget->x()); return realOffset;}/*! \reimp*/void QColumnViewGrip::paintEvent(QPaintEvent *event){ QPainter painter(this); QStyleOption opt; opt.initFrom(this); style()->drawControl(QStyle::CE_ColumnViewGrip, &opt, &painter, this); event->accept();}/*! \reimp Resize the parent window to the sizeHint*/void QColumnViewGrip::mouseDoubleClickEvent(QMouseEvent *event){ Q_UNUSED(event); QWidget *parentWidget = (QWidget*)parent(); int offset = parentWidget->sizeHint().width() - parentWidget->width(); if (isRightToLeft()) offset *= -1; moveGrip(offset); event->accept();}/*! \reimp Begin watching for mouse movements*/void QColumnViewGrip::mousePressEvent(QMouseEvent *event){ Q_D(QColumnViewGrip); d->originalXLocation = event->globalX(); event->accept();}/*! \reimp Calculate the movement of the grip and moveGrip() and emit gripMoved*/void QColumnViewGrip::mouseMoveEvent(QMouseEvent *event){ Q_D(QColumnViewGrip); int offset = event->globalX() - d->originalXLocation; d->originalXLocation = moveGrip(offset) + d->originalXLocation; event->accept();}/*! \reimp Stop watching for mouse movements*/void QColumnViewGrip::mouseReleaseEvent(QMouseEvent *event){ Q_D(QColumnViewGrip); d->originalXLocation = -1; event->accept();}/* * private object implementation */QColumnViewGripPrivate::QColumnViewGripPrivate(): QWidgetPrivate(),originalXLocation(-1){}#endif // QT_NO_QCOLUMNVIEW
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -