📄 khtmlview.h
字号:
/* This file is part of the KDE project Copyright (C) 1997 Martin Jones (mjones@kde.org) (C) 1998 Waldo Bastian (bastian@kde.org) (C) 1998, 1999 Torben Weis (weis@kde.org) (C) 1999 Lars Knoll (knoll@kde.org) (C) 1999 Antti Koivisto (koivisto@kde.org) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*/#ifndef KHTMLVIEW_H#define KHTMLVIEW_H// qt includes and classes#include <qscrollview.h>#include <kdelibs_export.h>class QPainter;class QRect;template< typename T > class QValueVector;namespace DOM { class HTMLDocumentImpl; class DocumentImpl; class ElementImpl; class HTMLElementImpl; class HTMLTitleElementImpl; class HTMLGenericFormElementImpl; class HTMLFormElementImpl; class HTMLAnchorElementImpl; class HTMLInputElementImpl; class Range; class NodeImpl; class CSSProperty;}namespace KJS { class WindowFunc; class ExternalFunc;}namespace khtml { class RenderObject; class RenderCanvas; class RenderStyle; class RenderLineEdit; class RenderPartObject; class RenderWidget; class CSSStyleSelector; class LineEditWidget; class CaretBox; void applyRule(DOM::CSSProperty *prop);}class KHTMLPart;class KHTMLViewPrivate;/** * Renders and displays HTML in a QScrollView. * * Suitable for use as an application's main view. **/class KHTML_EXPORT KHTMLView : public QScrollView{ Q_OBJECT friend class DOM::HTMLDocumentImpl; friend class DOM::HTMLTitleElementImpl; friend class DOM::HTMLGenericFormElementImpl; friend class DOM::HTMLFormElementImpl; friend class DOM::HTMLAnchorElementImpl; friend class DOM::HTMLInputElementImpl; friend class DOM::DocumentImpl; friend class KHTMLPart; friend class khtml::RenderCanvas; friend class khtml::RenderObject; friend class khtml::RenderLineEdit; friend class khtml::RenderPartObject; friend class khtml::RenderWidget; friend class khtml::CSSStyleSelector; friend class khtml::LineEditWidget; friend class KJS::WindowFunc; friend class KJS::ExternalFunc; friend void khtml::applyRule(DOM::CSSProperty *prop);public: /** * Constructs a KHTMLView. */ KHTMLView( KHTMLPart *part, QWidget *parent, const char *name=0 ); virtual ~KHTMLView(); /** * Returns a pointer to the KHTMLPart that is * rendering the page. **/ KHTMLPart *part() const { return m_part; } int frameWidth() const { return _width; } /** * Sets a margin in x direction. */ void setMarginWidth(int x); /** * Returns the margin width. * * A return value of -1 means the default value will be used. */ int marginWidth() const { return _marginWidth; } /* * Sets a margin in y direction. */ void setMarginHeight(int y); /** * Returns the margin height. * * A return value of -1 means the default value will be used. */ int marginHeight() { return _marginHeight; } /** * Sets verticals scrollbar mode. Reimplemented for internal reasons. */ virtual void setVScrollBarMode ( ScrollBarMode mode ); /** * Sets horizontal scrollbar mode. Reimplemented for internal reasons. */ virtual void setHScrollBarMode ( ScrollBarMode mode ); /** * Prints the HTML document. */ void print(); /** * Prints the HTML document. * @param quick if true, fully automated printing, without print dialog */ void print( bool quick ); // KDE 4.0: merge with above /** * ensure the display is up to date */ void layout(); // KDE 4.0: make private /** * Display all accesskeys in small tooltips */ void displayAccessKeys();signals: void finishedLayout(); void cleared(); void zoomView( int ); void hideAccessKeys(); void repaintAccessKeys(); void findAheadActive( bool );protected: void clear(); virtual void resizeEvent ( QResizeEvent * event ); virtual void showEvent ( QShowEvent * ); virtual void hideEvent ( QHideEvent *); virtual bool focusNextPrevChild( bool next ); virtual void drawContents ( QPainter * p, int clipx, int clipy, int clipw, int cliph ); virtual void drawContents( QPainter* ); virtual void viewportMousePressEvent( QMouseEvent * ); virtual void focusInEvent( QFocusEvent * ); virtual void focusOutEvent( QFocusEvent * ); virtual void viewportMouseDoubleClickEvent( QMouseEvent * ); virtual void viewportMouseMoveEvent(QMouseEvent *); virtual void viewportMouseReleaseEvent(QMouseEvent *); virtual void viewportResizeEvent(QResizeEvent*);#ifndef QT_NO_WHEELEVENT virtual void viewportWheelEvent(QWheelEvent*);#endif virtual void dragEnterEvent( QDragEnterEvent* ); virtual void dropEvent( QDropEvent* ); virtual void closeEvent ( QCloseEvent * ); virtual bool eventFilter(QObject *, QEvent *); void keyPressEvent( QKeyEvent *_ke ); void keyReleaseEvent ( QKeyEvent *_ke ); void contentsContextMenuEvent ( QContextMenuEvent *_ce ); void doAutoScroll(); void timerEvent ( QTimerEvent * );protected slots: void slotPaletteChanged(); void slotScrollBarMoved();private slots: void tripleClickTimeout(); void findTimeout(); void accessKeysTimeout(); /** * @internal * @since 3.4 * used for autoscrolling with MMB */ void slotMouseScrollTimer();private: void scheduleRelayout(khtml::RenderObject* clippedObj=0); void unscheduleRelayout(); void scheduleRepaint(int x, int y, int w, int h, bool asap=false); void unscheduleRepaint(); bool needsFullRepaint() const; void closeChildDialogs(); bool dialogsAllowed(); /** * Paints the HTML document to a QPainter. * The document will be scaled to match the width of * rc and clipped to fit in the height. * yOff determines the vertical offset in the document to start with. * more, if nonzero will be set to true if the documents extends * beyond the rc or false if everything below yOff was painted. **/ void paint(QPainter *p, const QRect &rc, int yOff = 0, bool *more = 0);#if 0 /** * Paints the HTML document to a QPainter. * The document will be scaled to match the width. **/ void paint(QPainter *p, int width);#endif /** * Get/set the CSS Media Type. * * Media type is set to "screen" for on-screen rendering and "print" * during printing. Other media types lack the proper support in the * renderer and are not activated. The DOM tree and the parser itself, * however, properly handle other media types. To make them actually work * you only need to enable the media type in the view and if necessary * add the media type dependent changes to the renderer. */ void setMediaType( const QString &medium ); QString mediaType() const; bool pagedMode() const; bool scrollTo(const QRect &); bool focusNextPrevNode(bool next); bool handleAccessKey(const QKeyEvent* ev); bool focusNodeWithAccessKey(QChar c, KHTMLView* caller = NULL); QMap< DOM::ElementImpl*, QChar > buildFallbackAccessKeys() const; void displayAccessKeys( KHTMLView* caller, KHTMLView* origview, QValueVector< QChar >& taken, bool use_fallbacks ); void useSlowRepaints(); void setIgnoreWheelEvents(bool e); void init(); DOM::NodeImpl *nodeUnderMouse() const; DOM::NodeImpl *nonSharedNodeUnderMouse() const; void restoreScrollBar(); QStringList formCompletionItems(const QString &name) const; void clearCompletionHistory(const QString& name); void addFormCompletionItem(const QString &name, const QString &value); void addNonPasswordStorableSite( const QString& host ); bool nonPasswordStorableSite( const QString& host ) const; bool dispatchMouseEvent(int eventId, DOM::NodeImpl *targetNode, DOM::NodeImpl *targetNodeNonShared, bool cancelable, int detail,QMouseEvent *_mouse, bool setUnder, int mouseEventType);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -