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

📄 qwidget_qws.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 3 页
字号:
        r.setBottom(tlw->geometry().bottom());        //qDebug("QWidget::setMicroFocusHint %d %d %d %d", r.x(),        //        r.y(), r.width(), r.height());        QInputContext::setMicroFocusWidget(this);        qwsDisplay()->setIMInfo(winid, gp.x(), gp.y(), r);        //send font info,  ###if necessary        qwsDisplay()->setInputFont(winid, font());    }#endif}#endifvoid QWidgetPrivate::updateSystemBackground() {}#ifndef QT_NO_CURSORvoid QWidgetPrivate::setCursor_sys(const QCursor &cursor){    Q_UNUSED(cursor);    Q_Q(QWidget);    if (q->isVisible())        updateCursor();}void QWidgetPrivate::unsetCursor_sys(){    Q_Q(QWidget);    if (q->isVisible())        updateCursor();}#endif //QT_NO_CURSORvoid QWidgetPrivate::setWindowTitle_sys(const QString &caption){    Q_Q(QWidget);    QWidget::qwsDisplay()->setWindowCaption(q, caption);}void QWidgetPrivate::setWindowIcon_sys(bool /*forceReset*/){#if 0     QTLWExtra* x = d->topData();     delete x->icon;     x->icon = 0;    QBitmap mask;    if (unscaledPixmap.isNull()) {    } else {        QImage unscaledIcon = unscaledPixmap.toImage();        QPixmap pixmap =            QPixmap::fromImage(unscaledIcon.scale(16, 16, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));        x->icon = new QPixmap(pixmap);        mask = pixmap.mask() ? *pixmap.mask() : pixmap.createHeuristicMask();    }#endif}void QWidgetPrivate::setWindowIconText_sys(const QString &iconText){    Q_UNUSED(iconText);}void QWidget::grabMouse(){    if (qt_mouseGrb)        qt_mouseGrb->releaseMouse();    qwsDisplay()->grabMouse(this,true);    qt_mouseGrb = this;    qt_pressGrab = 0;}#ifndef QT_NO_CURSORvoid QWidget::grabMouse(const QCursor &cursor){    if (qt_mouseGrb)        qt_mouseGrb->releaseMouse();    qwsDisplay()->grabMouse(this,true);    qwsDisplay()->selectCursor(this, cursor.handle());    qt_mouseGrb = this;    qt_pressGrab = 0;}#endifvoid QWidget::releaseMouse(){    if (qt_mouseGrb == this) {        qwsDisplay()->grabMouse(this,false);        qt_mouseGrb = 0;    }}void QWidget::grabKeyboard(){    if (keyboardGrb)        keyboardGrb->releaseKeyboard();    qwsDisplay()->grabKeyboard(this, true);    keyboardGrb = this;}void QWidget::releaseKeyboard(){    if (keyboardGrb == this) {        qwsDisplay()->grabKeyboard(this, false);        keyboardGrb = 0;    }}QWidget *QWidget::mouseGrabber(){    if (qt_mouseGrb)        return qt_mouseGrb;    return qt_pressGrab;}QWidget *QWidget::keyboardGrabber(){    return keyboardGrb;}void QWidget::activateWindow(){    QWidget *tlw = window();    if (tlw->isVisible()) {        Q_ASSERT(tlw->testAttribute(Qt::WA_WState_Created));        qwsDisplay()->requestFocus(tlw->internalWinId(), true);    }}void QWidgetPrivate::dirtyWidget_sys(const QRegion &rgn){    Q_Q(QWidget);    QWidget *tlw = q->window();    QWidgetBackingStore *wbs = tlw->d_func()->topData()->backingStore;    QRegion wrgn(rgn);    if (tlw != q) {        QPoint offs(q->mapTo(tlw, QPoint()));        wrgn.translate(offs);    }    QWSWindowSurface *surface = static_cast<QWSWindowSurface*>(wbs->windowSurface);    if (surface) {        surface->setDirty(wrgn);#ifdef Q_BACKINGSTORE_SUBSURFACES        // dirty on all subsurfaces...        QList<QWindowSurface*> subSurfaces = wbs->subSurfaces;        // XXX: hw: only if region intersects any of the subsurfaces        for (int i = 0; i < subSurfaces.size(); ++i) {            QWSWindowSurface *s = static_cast<QWSWindowSurface*>(subSurfaces.at(i));            QPoint p = s->window()->mapTo(tlw, QPoint()); // must use widget?            s->setDirty(wrgn.translated(-p));        }#endif // Q_BACKINGSTORE_SUBSURFACES    }}void QWidgetPrivate::cleanWidget_sys(const QRegion& rgn){    Q_UNUSED(rgn);}/*  Should we require that  q is a toplevel window ???  Used by QWSManager */void QWidgetPrivate::blitToScreen(const QRegion &globalrgn){    Q_Q(QWidget);    QWidget *win = q->window();    QBrush bgBrush = win->palette().brush(win->backgroundRole());    bool opaque = bgBrush.style() == Qt::NoBrush || bgBrush.isOpaque();    QWidget::qwsDisplay()->repaintRegion(win->data->winid, win->windowFlags(), opaque, globalrgn);}void QWidgetPrivate::show_sys(){    Q_Q(QWidget);    q->setAttribute(Qt::WA_Mapped);    if (q->isWindow()) {        if (QWindowSurface *surface = q->windowSurface()) {            const QRect frameRect = q->frameGeometry();            if (surface->geometry() != frameRect)                surface->setGeometry(frameRect);        }        QRegion r = localRequestedRegion();#ifndef QT_NO_QWS_MANAGER        if (extra && extra->topextra && extra->topextra->qwsManager) {            r.translate(data.crect.topLeft());            r += extra->topextra->qwsManager->region();            r.translate(-data.crect.topLeft());        }#endif        data.fstrut_dirty = true;        invalidateBuffer(r);        if (q->windowType() != Qt::Popup            && q->windowType() != Qt::Tool            && q->windowType() != Qt::ToolTip ) {            QWidget::qwsDisplay()->requestFocus(data.winid,true);        }	bool staysontop =            (q->windowFlags() & Qt::WindowStaysOnTopHint)            || (q->windowState() & Qt::WindowFullScreen)            || q->windowType() == Qt::Popup;        QWSChangeAltitudeCommand::Altitude altitude;        altitude = staysontop ? QWSChangeAltitudeCommand::StaysOnTop : QWSChangeAltitudeCommand::Raise;        QWidget::qwsDisplay()->setAltitude(data.winid, altitude, true);    }#ifdef Q_BACKINGSTORE_SUBSURFACES    else if (q->windowSurface()) {        QWSWindowSurface *surface;        surface = static_cast<QWSWindowSurface*>(q->windowSurface());        const QPoint p = q->mapToGlobal(QPoint());        surface->setGeometry(QRect(p, q->size()));    }#endif    if (!q->window()->data->in_show) {         invalidateBuffer(q->rect());    }}void QWidgetPrivate::hide_sys(){    Q_Q(QWidget);    deactivateWidgetCleanup();    if (q->isWindow()) {        q->releaseMouse();//        requestWindowRegion(QRegion());        extra->topextra->backingStore->releaseBuffer();        QWidget::qwsDisplay()->requestFocus(data.winid,false);    } else {        QWidget *p = q->parentWidget();        if (p &&p->isVisible()) {            invalidateBuffer(q->rect());        }    }}static Qt::WindowStates effectiveState(Qt::WindowStates state) {     if (state & Qt::WindowMinimized)         return Qt::WindowMinimized;     else if (state & Qt::WindowFullScreen)         return Qt::WindowFullScreen;     else if (state & Qt::WindowMaximized)         return Qt::WindowMaximized;     return Qt::WindowNoState; }void QWidgetPrivate::setMaxWindowState_helper(){    // in_set_window_state is usually set in setWindowState(), but this    // function is used in other functions as well    // (e.g QApplicationPrivate::setMaxWindowRect())    const uint old_state = data.in_set_window_state;    data.in_set_window_state = 1;#ifndef QT_NO_QWS_MANAGER    if (extra && extra->topextra && extra->topextra->qwsManager)        extra->topextra->qwsManager->maximize();    else#endif    {        Q_Q(QWidget);        const QApplicationPrivate *ap = QApplicationPrivate::instance();        const QRect maxWindowRect = ap->maxWindowRect(getScreen());        q->setGeometry(maxWindowRect);    }    data.in_set_window_state = old_state;}void QWidget::setWindowState(Qt::WindowStates newstate){    Q_D(QWidget);    Qt::WindowStates oldstate = windowState();    if (oldstate == newstate)        return;    if (isWindow() && !testAttribute(Qt::WA_WState_Created))        create();    data->window_state = newstate;    data->in_set_window_state = 1;    bool needShow = false;    Qt::WindowStates newEffectiveState = effectiveState(newstate);    Qt::WindowStates oldEffectiveState = effectiveState(oldstate);    if (isWindow() && newEffectiveState != oldEffectiveState) {        d->createTLExtra();        if (oldEffectiveState == Qt::WindowNoState) { //normal            d->topData()->normalGeometry = geometry();        } else if (oldEffectiveState == Qt::WindowFullScreen) {            setParent(0, d->topData()->savedFlags);            needShow = true;        } else if (oldEffectiveState == Qt::WindowMinimized) {            needShow = true;        }        if (newEffectiveState == Qt::WindowMinimized) {            //### not ideal...            hide();            needShow = false;        } else if (newEffectiveState == Qt::WindowFullScreen) {            d->topData()->savedFlags = windowFlags();            setParent(0, Qt::FramelessWindowHint | (windowFlags() & Qt::WindowStaysOnTopHint));            const QRect screen = qApp->desktop()->screenGeometry(qApp->desktop()->screenNumber(this));            move(screen.topLeft());            resize(screen.size());            raise();            needShow = true;        } else if (newEffectiveState == Qt::WindowMaximized) {            createWinId();            d->setMaxWindowState_helper();        } else { //normal            QRect r = d->topData()->normalGeometry;            if (r.width() >= 0) {                d->topData()->normalGeometry = QRect(0,0,-1,-1);                setGeometry(r);            }        }    }    data->in_set_window_state = 0;    if (needShow)        show();    if (newstate & Qt::WindowActive)        activateWindow();    QWindowStateChangeEvent e(oldstate);    QApplication::sendEvent(this, &e);}void QWidgetPrivate::setFocus_sys(){}void QWidgetPrivate::raise_sys(){    Q_Q(QWidget);    //@@@ transaction    if (q->isWindow()) {        Q_ASSERT(q->testAttribute(Qt::WA_WState_Created));        QWidget::qwsDisplay()->setAltitude(q->internalWinId(),                                           QWSChangeAltitudeCommand::Raise);        // XXX: subsurfaces?#ifdef QT_NO_WINDOWGROUPHINT#else        QObjectList childObjects =  q->children();        if (!childObjects.isEmpty()) {            QWidgetList toraise;            for (int i = 0; i < childObjects.size(); ++i) {                QObject *obj = childObjects.at(i);                if (obj->isWidgetType()) {                    QWidget* w = static_cast<QWidget*>(obj);                    if (w->isWindow())                        toraise.append(w);                }            }            for (int i = 0; i < toraise.size(); ++i) {                QWidget *w = toraise.at(i);                if (w->isVisible())                    w->raise();            }        }#endif // QT_NO_WINDOWGROUPHINT    } else {        setDirtyOpaqueRegion();        invalidateBuffer(q->rect());    }}void QWidgetPrivate::lower_sys(){    Q_Q(QWidget);    if (q->isWindow()) {        Q_ASSERT(q->testAttribute(Qt::WA_WState_Created));        QWidget::qwsDisplay()->setAltitude(data.winid,                                           QWSChangeAltitudeCommand::Lower);    } else if (QWidget *p = q->parentWidget()) {        setDirtyOpaqueRegion();        p->d_func()->invalidateBuffer(q->geometry());    }}

⌨️ 快捷键说明

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