本文整理汇总了C++中QAbstractScrollArea类的典型用法代码示例。如果您正苦于以下问题:C++ QAbstractScrollArea类的具体用法?C++ QAbstractScrollArea怎么用?C++ QAbstractScrollArea使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QAbstractScrollArea类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: deactivateFrom
void FlickCharm::deactivateFrom(QWidget *widget)
{
QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(widget);
if (scrollArea) {
QWidget *viewport = scrollArea->viewport();
viewport->removeEventFilter(this);
scrollArea->removeEventFilter(this);
delete d->flickData[viewport];
d->flickData.remove(viewport);
return;
}
QWebView *webView = qobject_cast<QWebView*>(widget);
if (webView) {
webView->removeEventFilter(this);
delete d->flickData[webView];
d->flickData.remove(webView);
return;
}
}
示例2: eventFilter
bool eventFilter(QObject *o, QEvent *e) {
switch (e->type()) {
case QEvent::MouseMove: {
if (notRelevant(e))
return false;
if (m_panning) {
const QPoint pos = static_cast<QMouseEvent*>(e)->pos();
bool noClick = !m_click;
if (noClick) {
const int dx = pos.x() - m_lastPos.x();
const int dy = pos.y() - m_lastPos.y();
if (QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea*>(o->parent())) {
// dolphin stacks a graphicsview into a view inside a view ...
QAbstractScrollArea *runner = area;
while ((runner = qobject_cast<QAbstractScrollArea*>(runner->parent())))
area = runner;
if (dx && area->horizontalScrollBar())
area->horizontalScrollBar()->setValue(area->horizontalScrollBar()->value() - dx);
if (dy && area->verticalScrollBar()) {
area->verticalScrollBar()->setValue(area->verticalScrollBar()->value() - dy);
}
} else { // mostly QWebView
int factor[2] = {1, 1};
if (o->inherits("QWebView")) {
foreach (const QObject *o2, o->children()) {
if (o2->inherits("QWebPage")) {
foreach (const QObject *o3, o2->children()) {
if (o3->inherits("QWebFrame")) {
const QSize sz = o3->property("contentsSize").toSize();
if (sz.isValid()) {
const QSize wsz = static_cast<QWidget*>(o)->size();
factor[0] = qMin(6, qRound(float(sz.width()) / wsz.width()));
factor[1] = qMin(6, qRound(float(sz.height()) / wsz.height()));
}
break;
}
}
break;
}
}
}
if (dy) {
QWheelEvent wev(pos, dy*factor[1], Qt::NoButton, Qt::NoModifier, Qt::Vertical);
QApplication::sendEvent(o, &wev);
}
if (dx) {
QWheelEvent weh(pos, dx*factor[0], Qt::NoButton, Qt::NoModifier, Qt::Horizontal);
QApplication::sendEvent(o, &weh); // "oi wehh"
}
}
}
m_lastPos = pos;
// qDebug() << "mouse move" << m_click << QPoint(m_startPoint - m_lastPos) << QApplication::startDragDistance();
m_click = m_click && qAbs(QPoint(m_startPoint - m_lastPos).manhattanLength()) < QApplication::startDragDistance();
// qDebug() << "->" << m_click;
return true; // noClick;
}
return false;
}
示例3: createPlatformGraphicsContext3DFromWidget
static void createPlatformGraphicsContext3DFromWidget(QWidget* widget, PlatformGraphicsContext3D* context,
PlatformGraphicsSurface3D* surface)
{
*context = 0;
*surface = 0;
QAbstractScrollArea* scrollArea = qobject_cast<QAbstractScrollArea*>(widget);
if (!scrollArea)
return;
QGLWidget* glViewport = qobject_cast<QGLWidget*>(scrollArea->viewport());
if (!glViewport)
return;
QGLWidget* glWidget = new QGLWidget(0, glViewport);
if (glWidget->isValid()) {
// Geometry can be set to zero because m_glWidget is used only for its QGLContext.
glWidget->setGeometry(0, 0, 0, 0);
#if HAVE(QT5)
*surface = glWidget->windowHandle();
*context = glWidget->context()->contextHandle();
#else
*surface = glWidget;
*context = const_cast<QGLContext*>(glWidget->context());
#endif
} else {
delete glWidget;
glWidget = 0;
}
}
示例4: setAutoHideCursor
void KoCursorPrivate::setAutoHideCursor( QWidget *w, bool enable, bool customEventFilter )
{
if ( !w || !enabled )
return;
QWidget* viewport = 0;
QAbstractScrollArea * sv = qobject_cast<QAbstractScrollArea *>( w );
if ( sv )
viewport = sv->viewport();
if ( enable )
{
if ( m_eventFilters.contains( w ) )
return;
KoCursorPrivateAutoHideEventFilter* filter = new KoCursorPrivateAutoHideEventFilter( w );
m_eventFilters.insert( w, filter );
if (viewport) {
m_eventFilters.insert( viewport, filter );
connect(viewport, SIGNAL(destroyed(QObject*)), this, SLOT(slotViewportDestroyed(QObject*)));
}
if ( !customEventFilter ) {
w->installEventFilter( filter ); // for key events
if (viewport)
viewport->installEventFilter( filter ); // for mouse events
}
connect( w, SIGNAL(destroyed(QObject*)),
this, SLOT(slotWidgetDestroyed(QObject*)) );
}
else
{
示例5:
void
TreeCanvas::scroll(int i) {
QAbstractScrollArea* sa =
static_cast<QAbstractScrollArea*>(parentWidget()->parentWidget());
double p = static_cast<double>(i)/100.0;
double xdiff = static_cast<double>(targetX-sourceX)*p;
double ydiff = static_cast<double>(targetY-sourceY)*p;
sa->horizontalScrollBar()->setValue(sourceX+static_cast<int>(xdiff));
sa->verticalScrollBar()->setValue(sourceY+static_cast<int>(ydiff));
}
示例6: mouseWidget
// The widget which gets mouse events, and that shows the cursor
// (that is the viewport, for a QAbstractScrollArea)
QWidget* KoCursorPrivateAutoHideEventFilter::mouseWidget() const
{
QWidget* w = m_widget;
// Is w a QAbstractScrollArea ? Call setCursor on the viewport in that case.
QAbstractScrollArea * sv = qobject_cast<QAbstractScrollArea *>( w );
if ( sv )
w = sv->viewport();
return w;
}
示例7: QStringLiteral
void QDesignerFormBuilder::applyProperties(QObject *o, const QList<DomProperty*> &properties)
{
typedef QList<DomProperty*> DomPropertyList;
if (properties.empty())
return;
const QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(core()->extensionManager(), o);
const QDesignerDynamicPropertySheetExtension *dynamicSheet = qt_extension<QDesignerDynamicPropertySheetExtension*>(core()->extensionManager(), o);
const bool changingMetaObject = WidgetFactory::classNameOf(core(), o) == QStringLiteral("QAxWidget");
const QDesignerMetaObjectInterface *meta = core()->introspection()->metaObject(o);
const bool dynamicPropertiesAllowed = dynamicSheet && dynamicSheet->dynamicPropertiesAllowed();
QDesignerPropertySheet *designerPropertySheet = qobject_cast<QDesignerPropertySheet *>(
core()->extensionManager()->extension(o, Q_TYPEID(QDesignerPropertySheetExtension)));
if (designerPropertySheet) {
if (designerPropertySheet->pixmapCache())
designerPropertySheet->setPixmapCache(m_pixmapCache);
if (designerPropertySheet->iconCache())
designerPropertySheet->setIconCache(m_iconCache);
}
const DomPropertyList::const_iterator cend = properties.constEnd();
for (DomPropertyList::const_iterator it = properties.constBegin(); it != cend; ++it) {
DomProperty *p = *it;
QVariant v;
if (!readDomEnumerationValue(p, sheet, v))
v = toVariant(o->metaObject(), p);
if (v.isNull())
continue;
const QString attributeName = p->attributeName();
if (d->applyPropertyInternally(o, attributeName, v))
continue;
// refuse fake properties like current tab name (weak test)
if (!dynamicPropertiesAllowed) {
if (changingMetaObject) // Changes after setting control of QAxWidget
meta = core()->introspection()->metaObject(o);
if (meta->indexOfProperty(attributeName) == -1)
continue;
}
QObject *obj = o;
QAbstractScrollArea *scroll = qobject_cast<QAbstractScrollArea *>(o);
if (scroll && attributeName == QStringLiteral("cursor") && scroll->viewport())
obj = scroll->viewport();
// a real property
obj->setProperty(attributeName.toUtf8(), v);
}
}
示例8: artworkContextMenuRequested
void MetaInfoDialog::artworkContextMenuRequested(const QPoint &pos)
{
QAbstractScrollArea *scrollArea = dynamic_cast<QAbstractScrollArea*>(QObject::sender());
QWidget *sender = scrollArea ? scrollArea->viewport() : dynamic_cast<QWidget*>(QObject::sender());
if(sender)
{
if(pos.x() <= sender->width() && pos.y() <= sender->height() && pos.x() >= 0 && pos.y() >= 0)
{
m_contextMenuArtwork->popup(sender->mapToGlobal(pos));
}
}
}
示例9: size
void
TreeCanvas::layoutDone(int w, int h, int scale0) {
targetW = w; targetH = h; targetScale = scale0;
QSize viewport_size = size();
QAbstractScrollArea* sa =
static_cast<QAbstractScrollArea*>(parentWidget()->parentWidget());
sa->horizontalScrollBar()->setRange(0,w-viewport_size.width());
sa->verticalScrollBar()->setRange(0,h-viewport_size.height());
if (layoutDoneTimerId == 0)
layoutDoneTimerId = startTimer(15);
}
示例10: switch
VisualNode*
TreeCanvas::eventNode(QEvent* event) {
int x = 0;
int y = 0;
switch (event->type()) {
case QEvent::ToolTip:
{
QHelpEvent* he = static_cast<QHelpEvent*>(event);
x = he->x();
y = he->y();
break;
}
case QEvent::MouseButtonDblClick:
case QEvent::MouseButtonPress:
case QEvent::MouseButtonRelease:
case QEvent::MouseMove:
{
QMouseEvent* me = static_cast<QMouseEvent*>(event);
x = me->x();
y = me->y();
break;
}
case QEvent::ContextMenu:
{
QContextMenuEvent* ce = static_cast<QContextMenuEvent*>(event);
x = ce->x();
y = ce->y();
break;
}
default:
return NULL;
}
QAbstractScrollArea* sa =
static_cast<QAbstractScrollArea*>(parentWidget()->parentWidget());
int xoff = sa->horizontalScrollBar()->value()/scale;
int yoff = sa->verticalScrollBar()->value()/scale;
BoundingBox bb = root->getBoundingBox();
int w =
static_cast<int>((bb.right-bb.left+Layout::extent)*scale);
if (w < sa->viewport()->width())
xoff -= (sa->viewport()->width()-w)/2;
VisualNode* n;
n = root->findNode(*na,
static_cast<int>(x/scale-xtrans+xoff),
static_cast<int>((y-30)/scale+yoff));
return n;
}
示例11: QObject
MouseMachine::MouseMachine(QWidget* parent, MouseMachine::Options options)
: QObject(parent)
, theParent(parent)
, m_options(options)
, machine(0)
, trPressed2Idle(0)
, trPressed2Man(0)
, trManScrolling(0)
, trIdle2Pressed(0)
, trMan2Auto(0)
, trMan2Idle(0)
, trAuto2Idle(0)
, trAuto2Man(0)
, trDoubleclick(0)
{
#ifdef Q_OS_SYMBIAN
iTouchFeedback = MTouchFeedback::Instance();
#endif
speedTimer.setInterval(SPEED_INTERVAL);
connect(&speedTimer, SIGNAL(timeout()), SLOT(slotCalculateSpeed()));
dblclickTimer.setInterval(DBLCLICK_INTERVAL);
dblclickTimer.setSingleShot(true);
connect(&dblclickTimer, SIGNAL(timeout()), SLOT(slotSingleTap()));
scrollTimeline.setCurveShape(QTimeLine::EaseOutCurve);
scrollTimeline.setEasingCurve(QEasingCurve::OutQuad);
connect(&scrollTimeline, SIGNAL(valueChanged(qreal)), SLOT(slotAutoscroll(qreal)));
connect(&scrollTimeline, SIGNAL(finished()), SLOT(slotAutoscrollFinished()));
tapHoldTimer.setInterval(TAPHOLD_TIMEOUT);
tapHoldTimer.setSingleShot(true);
theTarget = theParent;
QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(theParent);
if (scrollArea) {
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
theTarget = scrollArea->viewport();
theTarget->installEventFilter(this);
}
theParent->installEventFilter(this);
buildMachine();
machine->start();
}
示例12: locker
void
TreeCanvas::update(void) {
QMutexLocker locker(&mutex);
layoutMutex.lock();
if (root != NULL) {
root->layout(*na);
BoundingBox bb = root->getBoundingBox();
int w = static_cast<int>((bb.right-bb.left+Layout::extent)*scale);
int h =
static_cast<int>(2*Layout::extent+
root->getShape()->depth()*Layout::dist_y*scale);
xtrans = -bb.left+(Layout::extent / 2);
QSize viewport_size = size();
QAbstractScrollArea* sa =
static_cast<QAbstractScrollArea*>(parentWidget()->parentWidget());
sa->horizontalScrollBar()->setRange(0,w-viewport_size.width());
sa->verticalScrollBar()->setRange(0,h-viewport_size.height());
sa->horizontalScrollBar()->setPageStep(viewport_size.width());
sa->verticalScrollBar()->setPageStep(viewport_size.height());
sa->horizontalScrollBar()->setSingleStep(Layout::extent);
sa->verticalScrollBar()->setSingleStep(Layout::extent);
}
if (autoZoom)
zoomToFit();
layoutMutex.unlock();
QWidget::update();
}
示例13: polish
void FancyStyle::polish(QWidget *widget) {
QPlastiqueStyle::polish(widget);
{
QAbstractScrollArea *sa = qobject_cast<QAbstractScrollArea*>(widget);
if (sa) {
if (sa->frameShape() == QFrame::StyledPanel) {
sa->setFrameShadow(QFrame::Plain);
}
}
}
#ifdef Q_WS_MAC
{
QLabel *l = qobject_cast<QLabel*>(widget);
if (l) {
l->setFont(QApplication::font());
}
}
#endif
}
示例14: eventFilter
bool TextView::eventFilter(QObject *obj, QEvent *event)
{
#ifdef SCINTILLA
QAbstractScrollArea * sa = scintEditor;
#else
QAbstractScrollArea * sa = plainTextEdit;
#endif
if (obj == sa) {
sa->setAttribute(Qt::WA_NoMousePropagation, false);
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
switch (keyEvent->key())
{
case Qt::Key_Z:
if (keyEvent->modifiers().testFlag(Qt::ShiftModifier) && keyEvent->modifiers().testFlag(Qt::ControlModifier)) {
byteSource->historyForward();
keyEvent->accept();
return true;
}
else if (keyEvent->modifiers().testFlag(Qt::ControlModifier)) {
byteSource->historyBackward();
keyEvent->accept();
return true;
}
break;
default:
return false;
}
} else if (event->type() == QEvent::Wheel) {
if (sa->verticalScrollBar()->isVisible()) {
sa->setAttribute(Qt::WA_NoMousePropagation);
}
return false;
}
}
return QWidget::eventFilter(obj, event);
}
示例15: qWarning
void FlickCharm::activateOn(QWidget *widget)
{
QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(widget);
if (scrollArea) {
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
QWidget *viewport = scrollArea->viewport();
viewport->installEventFilter(this);
scrollArea->installEventFilter(this);
d->flickData.remove(viewport);
d->flickData[viewport] = new FlickData;
d->flickData[viewport]->widget = widget;
d->flickData[viewport]->state = FlickData::Steady;
return;
}
QWebView *webView = qobject_cast<QWebView*>(widget);
if (webView) {
QWebFrame *frame = webView->page()->mainFrame();
frame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
frame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);
webView->installEventFilter(this);
d->flickData.remove(webView);
d->flickData[webView] = new FlickData;
d->flickData[webView]->widget = webView;
d->flickData[webView]->state = FlickData::Steady;
return;
}
qWarning() << "FlickCharm only works on QAbstractScrollArea (and derived classes)";
qWarning() << "or QWebView (and derived classes)";
}