亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qtextview.cpp

?? qtopia-phone-2.2.0下公共的控件實現源代碼。
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
    QFontMetrics fm( p->fontMetrics() );    while ( b && tc.y() <= cy + ch ) {	if ( b && b->dirty ) //ensure the paragraph is laid out	    tc.updateLayout( p, cy + ch );	tc.gotoParagraph( p, b );	if ( tc.y() + tc.paragraph->height > cy ) {	    do {		tc.makeLineLayout( p );		QRect geom( tc.lineGeometry() );		if ( geom.bottom() > cy && geom.top() < cy+ch )		    tc.drawLine( p, ox, oy, cx, cy, cw, ch, r, paperColorGroup(), to );	    }	    while ( tc.gotoNextLine( p ) );	}	b = b->nextInDocument();    }    to.selstart = QtTriple();    to.selstart = to.selend;    richText().flow()->drawFloatingItems( p, ox, oy, cx, cy, cw, ch, r, paperColorGroup(), to );    p->setClipRegion(r);    if ( paper().pixmap() && !testWState(WState_GlobalBrushOrigin) )	p->drawTiledPixmap(0, 0, visibleWidth(), visibleHeight(),			   *paper().pixmap(), ox, oy);    else	p->fillRect(0, 0, visibleWidth(), visibleHeight(), paper() );    p->setClipping( FALSE );#if 0    int pagesize = richText().flow()->pagesize;    if ( pagesize > 0 ) {	p->setPen( DotLine );	for (int page = cy / pagesize; page <= (cy+ch) / pagesize; ++page ) {	    p->drawLine( cx-ox, page * pagesize - oy, cx-ox+cw, page*			 pagesize - oy );	}    }#endif}/*!  \reimp*/void QTextView::viewportResizeEvent(QResizeEvent* ){}void QTextView::doResize(){    if ( !d->fcresize->updateLayout( 0, d->fcresize->y() + d->fcresize->paragraph->height + 1000 ) )	d->resizeTimer->start( 0, TRUE );    QTextFlow* flow = richText().flow();    resizeContents( QMAX( flow->widthUsed-1, visibleWidth() ), flow->height );}/*!  \reimp*/void QTextView::resizeEvent( QResizeEvent* e ){    if ( e->size().width() == e->oldSize().width() ) {	int vw = visibleWidth();	QScrollView::resizeEvent( e );	if ( vw == visibleWidth() )	    return;    } else {	setUpdatesEnabled( FALSE ); // to hinder qscrollview from showing/hiding scrollbars. Safe since we call resizeContents later!	QScrollView::resizeEvent( e );	setUpdatesEnabled( TRUE);    }    richText().invalidateLayout();    richText().flow()->initialize( visibleWidth() );    updateLayout();}/*!  \reimp*/void QTextView::viewportMousePressEvent( QMouseEvent* e ){    if ( e->button() != LeftButton )	return;#ifdef QT_KEYPAD_MODE    if( qt_modalEditingEnabled ) {	if ( !isModalEditing() )	    setModalEditing( TRUE );    }#endif    d->cursor = e->pos() + QPoint( contentsX(), contentsY() );    QRichTextIterator it( richText() );    bool within = it.goTo( d->cursor );    bool sel = d->selection && it.position() >= d->selstart && it.position() < d->selend;    if ( !sel || !within ) {	clearSelection();	d->selorigin = it.position();	d->selstart = d->selorigin;	d->selend = d->selstart;	d->dragselection = TRUE;#ifndef QT_NO_DRAGANDDROP    } else {	d->dragTimer->start( QApplication::startDragTime(), TRUE );#endif    }}/*!  \reimp*/void QTextView::viewportMouseReleaseEvent( QMouseEvent* e ){    if ( e->button() == LeftButton ) {	d->scrollTimer->stop();#ifndef QT_NO_CLIPBOARD	if ( d->dragselection ) {#if defined(_WS_X11_)	    if ( style() == MotifStyle )		copy();#endif	    d->dragselection = FALSE;	} else#endif	{	    clearSelection();	}    }}/*!  Returns TRUE if there is any text selected, FALSE otherwise.  \sa selectedText()*/bool QTextView::hasSelectedText() const{    return d->selection;}/*!  Returns a copy of the selected text in plain text format.  \sa hasSelectedText()*/QString QTextView::selectedText() const{    if ( !d->selection )	return QString::null;    QRichTextIterator it( richText() );    it.goTo( d->selstart );    if ( d->selstart.a == d->selend.a && d->selstart.b == d->selend.b )	return it.text().mid( d->selstart.c, d->selend.c - d->selstart.c );    int column = 0;    QString txt;    QString s = it.text().mid( d->selstart.c );    while ( it.position() < d->selend ) {	if ( !s.isEmpty() ) {	    if ( column + s.length() > 79 &&		it.outmostParagraph()->style->whiteSpaceMode() == QStyleSheetItem::WhiteSpaceNormal ) {		txt += '\n';		column = 0;	    }	    if ( s[(int)s.length()-1]== '\n' )		column = 0;	    txt += s;	    column += s.length();	}	int oldpar = it.position().a;	if ( !it.right( FALSE ) )	    break;	if ( it.position().a != oldpar ) {	    txt += '\n';	    column = 0;	}	s = it.text();	if ( it.position().a == d->selend.a && it.position().b == d->selend.b )	    s = s.left( d->selend.c );    }    return txt;}static int logicalFontSize( QStyleSheet* style, QFont base, int pt ){    for (int i=0; i<10; i++) {	QFont b = base;	style->scaleFont(b,i);	if ( b.pointSize() >= pt )	    return i;    }    return 1; // else what?}static QString formatDiff(const QTextView* view, QTextCharFormat* pfmt, QTextCharFormat* nfmt){    QString txt;    QFont basefont = view->font();    if ( pfmt != nfmt ) {	QString t,pre,post;	if ( pfmt->color() != nfmt->color() ) {	    QString c;	    t += c.sprintf("color=#%06x ", nfmt->color().rgb());	}	if ( pfmt->font() != nfmt->font() ) {	    int plsz = logicalFontSize( view->styleSheet(), basefont, pfmt->font().pointSize() );	    int nlsz = logicalFontSize( view->styleSheet(), basefont, nfmt->font().pointSize() );	    if ( nlsz != plsz ) {		QString f;		t += f.sprintf("size=%d ",nlsz-plsz);	    }	    if ( pfmt->font().family() != nfmt->font().family() ) {		t += "face=";		t += nfmt->font().family();		t += " ";	    }	    if ( pfmt->font().italic() != nfmt->font().italic() ) {		bool on = nfmt->font().italic();		if ( on )		    post = post + "<i>";		else		    pre = "</i>" + pre;	    }	    if ( pfmt->font().weight() != nfmt->font().weight() ) {		bool on = nfmt->font().weight() > 50;		if ( on )		    post = post + "<b>";		else		    pre = "</b>" + pre;	    }	}	txt += pre;	if ( !t.isEmpty() ) {	    t.truncate(t.length()-1); // chop space	    txt += "<font " + t + ">";	}	txt += post;    }    return txt;}/*!  Returns a copy of the selected text in rich text format (XML).  \sa hasSelectedText()*/QString QTextView::selectedRichTextInternal() const{    if ( !d->selection )	return QString::null;    QRichTextIterator it( richText() );    it.goTo( d->selstart );    QString txt;    QString s = it.text().mid( d->selstart.c );    QTextCharFormat ifmt;    QTextCharFormat* pfmt = &ifmt;    while ( it.position() < d->selend ) {	QTextCharFormat* nfmt = it.format();	txt += formatDiff(this,pfmt,nfmt);	pfmt = nfmt;	txt += s;	int oldpar = it.position().a;	if ( !it.right( FALSE ) )	    break;	if ( it.position().a != oldpar )	    txt += "</p><p>";	s = it.text();	if ( it.position().a == d->selend.a && it.position().b == d->selend.b )	    s = s.left( d->selend.c );    }    txt += formatDiff(this,pfmt,&ifmt);    return txt;}#ifndef QT_NO_CLIPBOARD/*!  Copies the marked text to the clipboard.*/void QTextView::copy(){#if defined(_WS_X11_)    disconnect( QApplication::clipboard(), SIGNAL(dataChanged()), this, 0);#endif    QString t = selectedText();    QRegExp nbsp(QChar(0x00a0U));    t.replace( nbsp, " " );#if defined(_OS_WIN32_)    // Need to convert NL to CRLF    QRegExp nl("\\n");    t.replace( nl, "\r\n" );#endif    QApplication::clipboard()->setText( t );#if defined(_WS_X11_)    connect( QApplication::clipboard(), SIGNAL(dataChanged()),	     this, SLOT(clipboardChanged()) );#endif}#endif/*!  Selects all text.*/void QTextView::selectAll(){    QRichTextIterator it( richText() );    d->selstart = it.position();    while ( it.right( FALSE ) ) { }    d->selend = it.position();    viewport()->update();    d->selection = TRUE;#if defined(_WS_X11_)    copy();#endif}/*!  \reimp*/void QTextView::viewportMouseMoveEvent( QMouseEvent* e){    if (e->state() & LeftButton ) {	if (d->dragselection ) {	    doSelection( e->pos() );	    ensureVisible( d->cursor.x(), d->cursor.y() );#ifndef QT_NO_DRAGANDDROP	} else if ( d->dragTimer->isActive() ) {	    d->dragTimer->stop();	    doStartDrag();#endif	}    }}/*!  Provides scrolling and paging.*/void QTextView::keyPressEvent( QKeyEvent * e){#ifdef QT_KEYPAD_MODE    switch( e->key() ) {	case Key_Select:	    if( qt_modalEditingEnabled ) {		setModalEditing( !isModalEditing() );	    }	    return;	case Key_Back:	case Key_No:	    if ( qt_modalEditingEnabled && isModalEditing() ) {		setModalEditing( FALSE );	    } else {		e->ignore();	    }	    return;	default:	    if( qt_modalEditingEnabled ) {		if ( !isModalEditing() ) {		    e->ignore();		    return;		}	    }    }#endif    int unknown = 0;    switch (e->key()) {    case Key_Right:	scrollBy( 10, 0 );	break;    case Key_Left:	scrollBy( -10, 0 );	break;    case Key_Up:	scrollBy( 0, -10 );	break;    case Key_Down:	scrollBy( 0, 10 );	break;    case Key_Home:	setContentsPos(0,0);	break;    case Key_End:	setContentsPos(0,contentsHeight()-visibleHeight());	break;    case Key_PageUp:	scrollBy( 0, -visibleHeight() );	break;    case Key_PageDown:	scrollBy( 0, visibleHeight() );	break;#ifndef QT_NO_CLIPBOARD    case Key_F16: // Copy key on Sun keyboards	copy();	break;#if defined (_WS_WIN_)    case Key_Insert:#endif    case Key_C:	if ( e->state() & ControlButton )	    copy();	break;#endif    default:	unknown++;    }    if ( unknown )				// unknown key	e->ignore();}/*!  \reimp*/void QTextView::paletteChange( const QPalette & p ){    QScrollView::paletteChange( p );    if ( !d->ownpalette ) {	d->mypapcolgrp = palette().active();	d->papcolgrp = d->mypapcolgrp;    }}/*!  Returns the current text format.  \sa setTextFormat() */Qt::TextFormat QTextView::textFormat() const{    return d->textformat;}/*!  Sets the text format to \a format. Possible choices are  <ul>  <li> \c PlainText - all characters are displayed verbatim,  including all blanks and linebreaks.  <li> \c RichText - rich text rendering. The available  styles are defined in the default stylesheet  QStyleSheet::defaultSheet().  <li> \c AutoText - this is also the default. The label  autodetects which rendering style suits best, \c PlainText  or \c RichText. Technically, this is done by using the  QStyleSheet::mightBeRichText() heuristic.  </ul> */void QTextView::setTextFormat( Qt::TextFormat format ){    d->textformat = format;    setText( d->original_txt, d->contxt ); // trigger update}/*!\internal */void QTextView::updateLayout(){    if ( !isVisible() ) {	d->dirty = TRUE;	return;    }    QSize cs( viewportSize( contentsWidth(), contentsHeight() ) );    int ymax = contentsY() + cs.height() + 1;    delete d->fcresize;    d->fcresize = new QRichTextFormatter( richText() );    d->fcresize->initParagraph( 0, &richText() );    d->fcresize->updateLayout( 0, ymax );    QTextFlow* flow = richText().flow();    QSize vs( viewportSize( flow->widthUsed, flow->height ) );    // This condition is wrong. See Qtopia bug 2271 (among others).    //if ( vs.width() != visibleWidth() ) {	flow->initialize( vs.width() );	richText().invalidateLayout();	d->fcresize->gotoParagraph( 0, &richText() );	d->fcresize->updateLayout( 0, ymax );    //}    resizeContents( QMAX( flow->widthUsed-1, vs.width() ), flow->height );    d->resizeTimer->start( 0, TRUE );    d->dirty = FALSE;}/*!\reimp */void QTextView::showEvent( QShowEvent* ){    if ( d->dirty )	updateLayout();}void QTextView::clearSelection(){#ifndef QT_NO_DRAGANDDROP    d->dragTimer->stop();#endif    if ( !d->selection )	return; // nothing to do    d->selection = FALSE;    QRichTextIterator it( richText() );    it.goTo( d->selend );    int y = it.lineGeometry().bottom();    it.goTo( d->selstart );    if ( y - it.lineGeometry().top()  >= visibleHeight() )	viewport()->update();    else {	QRect r = it.lineGeometry();	while ( it.position() < d->selend && it.right() ) {	    r = r.unite( it.lineGeometry() );	}	updateContents( r );    }}#ifndef QT_NO_DRAGANDDROPvoid QTextView::doStartDrag(){    QTextDrag* drag = new QTextDrag( selectedText(), this ) ;    drag->drag();}#endifvoid QTextView::doAutoScroll(){    QPoint pos = viewport()->mapFromGlobal( QCursor::pos() );    if ( pos.y() < 0 )	scrollBy( 0, -32 );    else if (pos.y() > visibleHeight() )	scrollBy( 0, 32 );    doSelection( pos );}void QTextView::doSelection( const QPoint& pos ){    QPoint to( pos + QPoint( contentsX(), contentsY()  ) );    if ( to != d->cursor ) {	QRichTextIterator it( richText() );	it.goTo( to );	d->selection = TRUE;	if ( (it.position() != d->selstart) && (it.position()  != d->selend) ) {	    if ( it.position() < d->selorigin ) {		d->selstart = it.position();		d->selend = d->selorigin;	    } else {		d->selstart = d->selorigin;		d->selend = it.position();	    }	    QRichTextIterator it2( richText() );	    it2.goTo( d->cursor );	    QRect r = it2.lineGeometry();	    r = r.unite( it.lineGeometry() );	    while ( it.position() < it2.position() && it.right( FALSE ) )		r = r.unite( it.lineGeometry() );	    while ( it2.position() < it.position() && it2.right( FALSE ) )		r = r.unite( it2.lineGeometry() );	    d->cursor = to;	    repaintContents( r, FALSE );	}    }    if ( pos.y() < 0 || pos.y() > visibleHeight() )	d->scrollTimer->start( 100, FALSE );    else	d->scrollTimer->stop();}void QTextView::clipboardChanged(){#if defined(_WS_X11_)    disconnect( QApplication::clipboard(), SIGNAL(dataChanged()),		this, SLOT(clipboardChanged()) );    clearSelection();#endif}/*!\reimp */void QTextView::focusInEvent( QFocusEvent * ){    setMicroFocusHint(width()/2, 0, 1, height(), FALSE);}/*!\reimp */void QTextView::focusOutEvent( QFocusEvent * ){}#endif  // QT_NO_TEXTVIEW

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧亚一区二区三区| 欧美aⅴ一区二区三区视频| 亚洲第一狼人社区| 另类小说综合欧美亚洲| 国产一区二区福利| 色综合视频在线观看| 欧美一区二区三区成人| 久久综合成人精品亚洲另类欧美 | 亚洲成人在线观看视频| 蜜臀国产一区二区三区在线播放| 国产一区欧美日韩| 91福利视频久久久久| 精品日韩在线观看| 亚洲综合无码一区二区| 激情久久五月天| 色爱区综合激月婷婷| 精品国产3级a| 夜夜亚洲天天久久| 国产一区二区免费视频| 色老综合老女人久久久| 欧美精品一区在线观看| 一区二区三区不卡在线观看 | 国产欧美日韩综合精品一区二区 | 欧美色大人视频| ww亚洲ww在线观看国产| 悠悠色在线精品| 国产一区福利在线| 欧美美女一区二区在线观看| 国产欧美视频在线观看| 免费国产亚洲视频| 91蝌蚪国产九色| 精品国产一区二区三区四区四 | 欧美午夜精品久久久久久孕妇| 精品久久一二三区| 亚洲成年人影院| 99久久99久久精品国产片果冻| 日韩免费性生活视频播放| 亚洲自拍偷拍av| 从欧美一区二区三区| 日韩一区二区视频在线观看| 亚洲精品成人在线| 不卡一区中文字幕| 国产亚洲va综合人人澡精品| 日日欢夜夜爽一区| 色94色欧美sute亚洲线路一久| 国产区在线观看成人精品| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美中文一区二区三区| 夜色激情一区二区| 成人小视频在线| 中文字幕在线不卡国产视频| 免费视频一区二区| 国模套图日韩精品一区二区| 色悠久久久久综合欧美99| 亚洲精品欧美激情| 成人性生交大片免费看视频在线 | 99久久99久久精品免费观看 | 国产乱子伦一区二区三区国色天香| 欧美日韩中文精品| 亚洲品质自拍视频| www.亚洲激情.com| 国产欧美一区二区精品仙草咪| 久久超碰97中文字幕| 日韩色在线观看| 蜜芽一区二区三区| 欧美一区二区二区| 三级久久三级久久| 欧美夫妻性生活| 男男视频亚洲欧美| 欧美丰满少妇xxxxx高潮对白 | 日韩一级二级三级| 毛片av中文字幕一区二区| 制服丝袜在线91| 日日摸夜夜添夜夜添国产精品| 欧美久久久久久蜜桃| 亚洲mv在线观看| 在线观看免费一区| 亚洲国产日韩在线一区模特| 欧美三区在线视频| 日韩精品乱码av一区二区| 91精品国产综合久久久久| 日韩国产精品久久久| 欧美高清你懂得| 久久99精品久久久久久久久久久久| 欧美一区二区三区四区在线观看| 美女久久久精品| 欧美精品一区二区三区蜜桃视频| 国产专区欧美精品| 国产日产欧产精品推荐色| 成人美女在线视频| 亚洲精品乱码久久久久久久久| 在线观看欧美日本| 免费成人你懂的| 久久久久久电影| 不卡视频一二三四| 一区二区三区高清| 欧美一级黄色录像| 国产成人免费视频网站高清观看视频| 久久久www成人免费毛片麻豆 | 中文字幕在线观看一区二区| 在线免费不卡电影| 日韩成人精品在线| 久久久久久久综合狠狠综合| 波多野结衣视频一区| 亚洲制服丝袜一区| 欧美一区午夜视频在线观看| 国产一区二区三区免费在线观看| 亚洲国产精品高清| 欧美怡红院视频| 久久不见久久见中文字幕免费| 国产精品久久一卡二卡| 在线观看亚洲a| 国产真实乱对白精彩久久| 一区二区在线看| 一区二区三区在线影院| 欧美性xxxxx极品少妇| 免费观看30秒视频久久| 国产精品久久国产精麻豆99网站| 欧美丝袜自拍制服另类| 国产一区999| 一区二区成人在线视频| 亚洲精品一区在线观看| 91久久奴性调教| 韩国av一区二区三区四区| 综合电影一区二区三区 | 三级亚洲高清视频| 国产精品欧美一区二区三区| 欧美三级视频在线观看| 国产一区二区三区不卡在线观看 | 欧美久久一区二区| 亚洲一级二级三级在线免费观看| 视频在线观看91| 欧美一激情一区二区三区| 日本aⅴ免费视频一区二区三区| 国产欧美精品一区| 美女视频网站久久| 国产精品高潮呻吟| 五月天久久比比资源色| 国产欧美1区2区3区| 欧美日韩精品高清| 国产成人免费视频网站高清观看视频| 久久精品国产久精国产| 日韩专区一卡二卡| 五月开心婷婷久久| 亚洲chinese男男1069| 亚洲六月丁香色婷婷综合久久 | 日韩欧美一级二级| 欧美精品自拍偷拍动漫精品| 欧美日韩性生活| 欧美丝袜自拍制服另类| 欧美主播一区二区三区| 在线免费视频一区二区| 欧美综合在线视频| 91黄色免费观看| 在线欧美日韩国产| 欧美亚洲日本国产| 欧美日韩中文字幕一区| 欧美日韩精品三区| 欧美人牲a欧美精品| 欧美浪妇xxxx高跟鞋交| 奇米一区二区三区| 精品久久久三级丝袜| 成人激情图片网| 亚洲欧美国产77777| 欧美美女黄视频| 激情文学综合丁香| 亚洲一区二区三区在线看 | 欧美成人三级在线| 久久久精品综合| 国产午夜精品在线观看| 欧美成人一级视频| 欧美色电影在线| 国模一区二区三区白浆| 国产欧美日韩综合| 欧美日韩视频在线观看一区二区三区 | 国产黄色精品视频| 国产美女一区二区| 成人av电影免费在线播放| 久久夜色精品国产噜噜av| 久久久欧美精品sm网站| 欧美激情一区二区| 亚洲精品免费看| 天天操天天色综合| 国产精品久久影院| 日本久久精品电影| 精品在线观看视频| 亚洲欧美国产高清| 国产日韩综合av| 欧美精品色综合| 色婷婷久久一区二区三区麻豆| 日韩av电影天堂| 亚洲欧美日韩精品久久久久| 精品国产一区二区三区四区四| 欧美在线观看视频在线| 国产成人免费网站| 日本v片在线高清不卡在线观看| 亚洲视频在线一区观看| 国产精品视频线看| 精品久久国产老人久久综合| 欧美精品aⅴ在线视频|