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

📄 scrollbox.cpp

📁 LINUX下的混音软件
💻 CPP
字号:
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: *//*    Rosegarden    A MIDI and audio sequencer and musical notation editor.     This program is Copyright 2000-2007        Guillaume Laurent   <glaurent@telegraph-road.org>,        Chris Cannam        <cannam@all-day-breakfast.com>,        Richard Bown        <richard.bown@ferventsoftware.com>     The moral rights of Guillaume Laurent, Chris Cannam, and Richard    Bown to claim authorship of this work have been asserted.     This file is based on code from KGhostView, Copyright 1997-2002        Markkhu Hihnala     <mah@ee.oulu.fi>        and the KGhostView authors.    Other copyrights also apply to some parts of this work.  Please    see the AUTHORS file and individual file headers for details.     This program is free software; you can redistribute it and/or    modify it under the terms of the GNU General Public License as    published by the Free Software Foundation; either version 2 of the    License, or (at your option) any later version.  See the file    COPYING included with this distribution for more information.*/#include "ScrollBox.h"#include <qapplication.h>#include <qframe.h>#include <qimage.h>#include <qpainter.h>#include <qpixmap.h>#include <qpoint.h>#include <qrect.h>#include <qsize.h>#include <qwidget.h>namespace Rosegarden{ScrollBox::ScrollBox(QWidget* parent, SizeMode sizeMode, const char* name) :        QFrame(parent, name),        m_sizeMode(sizeMode){    setFrameStyle(Panel | Sunken);}void ScrollBox::mousePressEvent(QMouseEvent* e){    m_mouse = e->pos();    if (e->button() == RightButton)        emit button3Pressed();    if (e->button() == MidButton)        emit button2Pressed();}void ScrollBox::mouseMoveEvent(QMouseEvent* e){    if (e->state() != LeftButton)        return ;    int dx = (e->pos().x() - m_mouse.x()) * m_pagesize.width() / width();    int dy = (e->pos().y() - m_mouse.y()) * m_pagesize.height() / height();    emit valueChanged(QPoint(m_viewpos.x() + dx, m_viewpos.y() + dy));    emit valueChangedRelative(dx, dy);    m_mouse = e->pos();}void ScrollBox::drawContents(QPainter* paint){    if (m_pagesize.isEmpty())        return ;    QRect c(contentsRect());    paint->setPen(Qt::red);    int len = m_pagesize.width();    int x = c.x() + c.width() * m_viewpos.x() / len;    int w = c.width() * m_viewsize.width() / len ;    if (w > c.width())        w = c.width();    len = m_pagesize.height();    int y = c.y() + c.height() * m_viewpos.y() / len;    int h = c.height() * m_viewsize.height() / len;    if (h > c.height())        h = c.height();    paint->drawRect(x, y, w, h);}void ScrollBox::setPageSize(const QSize& s){    m_pagesize = s;    setFixedWidth(100);    setFixedHeight(100);    int maxWidth = int(QApplication::desktop()->width() * 0.75);    int maxHeight = int(QApplication::desktop()->height() * 0.75);    if (m_sizeMode == FixWidth) {        int height = s.height() * width() / s.width();        if (height > maxHeight) {            setFixedWidth(width() * maxHeight / height);            height = maxHeight;        }        setFixedHeight(height);    } else {        int width = s.width() * height() / s.height();        if (width > maxWidth) {            setFixedHeight(height() * maxWidth / width);            width = maxWidth;        }        setFixedWidth(width);    }    repaint();}void ScrollBox::setViewSize(const QSize& s){    m_viewsize = s;    repaint();}void ScrollBox::setViewPos(const QPoint& pos){    m_viewpos = pos;    repaint();}void ScrollBox::setViewX(int x){    m_viewpos = QPoint(x, m_viewpos.y());    repaint();}void ScrollBox::setViewY(int y){    m_viewpos = QPoint(m_viewpos.x(), y);    repaint();}void ScrollBox::setThumbnail(QPixmap img){    setPaletteBackgroundPixmap(img.convertToImage().smoothScale(size()));}}#include "ScrollBox.moc"

⌨️ 快捷键说明

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