国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

windows10下Qt5.15配置

這篇具有很好參考價(jià)值的文章主要介紹了windows10下Qt5.15配置。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Qt系列文章目錄

前言

	最近前端JavaScript想要調(diào)用Qt的圖片處理,圖片都是8k以上的分辨率,前端使用canvas畫布,當(dāng)處理幾張8k高分辨率圖片勉強(qiáng)能用,但是處理到20多張以后,canvas也依然卡頓。使用Qt QGraphicsItem、QGraphicsView、QGraphicsScene處理100張以內(nèi)的8k高清圖片依然游刃有余,所以要用到WebAssembly,以便JS能夠調(diào)用Qt。需要在Qt中使用WebAssembly 。  

一、Qt for WebAssembly | Qt 5.15

Qt for WebAssembly | Qt 5.15官網(wǎng)
由于我機(jī)器上安裝的Qt5.12不支持WebAssembly 。Qt適合emsdk的版本, 所以要把升級到Qt5.15
windows10下Qt5.15配置
Qt5.15.2的安裝還是比較麻煩的,由于Qt5.15以后,Qt官方只提供了在線安裝版本,不提供離線安裝版本,安裝時(shí)還需要下載。首先需要科學(xué)上網(wǎng),否則在安裝時(shí)一直提示無法下載,就算是科學(xué)上網(wǎng)了,安裝過程中還是經(jīng)常提示無法下載XXXX組件,必須反復(fù)嘗試手動(dòng)重試下載,把人整瘋。網(wǎng)上大神有發(fā)過離線安裝Qt5.15的文章,沒有試過:離線安裝Qt5.15.2
各位看官老爺可是嘗試下哈, Qt5.15.2的目錄下已經(jīng)包含了wasm編譯所需要的庫和環(huán)境,默認(rèn)路徑在 5.15.2/wasm_32下,但是wasm對應(yīng)的emscripten版本是1.39.7,可以通過輸入命令行(先cd到你的pro工程目錄下)的方式來獲取版本信息,所以你需要下載并安裝emscripten1.39.7版本。Qt5.14.2還有離線安裝包
windows10下Qt5.15配置
Qt5.15以后官方已不提供離線安裝包
windows10下Qt5.15配置

二、Qt5.15.2配置

1.配置編譯器

windows10下Qt5.15配置
windows10下Qt5.15配置

2.代碼測試

1 . QGraphicsItem封裝成 MyItem
#ifndef MYITEM_H
#define MYITEM_H

#include <QGraphicsItem>
#include <QPainter>
#include <QStyleOptionGraphicsItem>
#include <QKeyEvent>
#include <QDebug>
#include <QPixmap>

class MyItem : public QGraphicsItem
{
public:
    MyItem();
    QRectF boundingRect() const;
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
               QWidget *widget);
    void setColor(const QColor &color) { brushColor = color; }
protected:
    void keyPressEvent(QKeyEvent *event);
    void mousePressEvent(QGraphicsSceneMouseEvent *event);
    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
    void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
    void hoverLeaveEvent (QGraphicsSceneHoverEvent * event);
    void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
private:
    QColor brushColor;

    QPointF         m_centerPointF;
    bool            m_bResizing;
    bool            m_isMove;
    QPixmap         m_pix;
};


#endif // MYITEM_H

#include "MyItem.h"
#include <QMenu>
#include <QGraphicsSceneContextMenuEvent>
#include <QAction>

MyItem::MyItem()
{
    brushColor = Qt::red;
    setFlag(QGraphicsItem::ItemIsFocusable);
    setFlag(QGraphicsItem::ItemIsMovable);
    //setAcceptHoverEvents(true);
}
QRectF MyItem::boundingRect() const
{
    qreal adjust = 0.5;
    return QRectF(-10 - adjust, -10 - adjust,
                  20 + adjust, 20 + adjust);
}
void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
                   QWidget *widget)
{
//    qDebug("************MyItem::paint*****************");
//    if(hasFocus()) {
//        painter->setPen(QPen(QColor(255,255,255,200)));
//    } else {
//        painter->setPen(QPen(QColor(100,100,100,100)));
//    }
//    painter->setBrush(brushColor);
//    painter->drawRect(-10, -10, 20, 20);
    painter->drawPixmap(-m_pix.width() / 2, -m_pix.height() / 2, m_pix);
}
// 鼠標(biāo)按下事件處理函數(shù),設(shè)置被點(diǎn)擊的圖形項(xiàng)獲得焦點(diǎn),并改變光標(biāo)外觀
void MyItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
    //    qDebug("************MyItem::mousePressEvent*****************");
    //    setFocus();
    //    setCursor(Qt::ClosedHandCursor);
    setFocus();
    setCursor(Qt::ClosedHandCursor);



    //stackBefore(this);
    topLevelItem();

    setColor(QColor(255, 0, 0, 255));
    setOpacity(0.8);
    if (event->button() == Qt::LeftButton) {
        if (event->modifiers() == Qt::ShiftModifier) {
            qDebug() << "Custom item left clicked with shift key.";
            // 選中 item
            setSelected(true);
            /*this->setZValue(1);*/

        }
        //            else if (event->modifiers() == Qt::AltModifier) {
        //                qDebug() << "Custom item left clicked with alt key.";
        //                // 重置 item 大小
        //                double radius = boundingRect().width() / 2.0;
        //                QPointF topLeft = boundingRect().topLeft();
        //                m_centerPointF = QPointF(topLeft.x() + pos().x() + radius, topLeft.y() + pos().y() + radius);
        //                QPointF pos = event->scenePos();
        //                qDebug() << boundingRect() << radius << this->pos() << pos << event->pos();
        //                double dist = sqrt(pow(m_centerPointF.x() - pos.x(), 2) + pow(m_centerPointF.y() - pos.y(), 2));
        //                if (dist / radius > 0.8) {
        //                    qDebug() << dist << radius << dist / radius;
        //                    m_bResizing = true;
        //                }
        //                else {
        //                    m_bResizing = false;
        //                }
        //            }
        //            else {
        //                qDebug() << "Custom item left clicked.";
        //                QGraphicsItem::mousePressEvent(event);
        //                event->accept();
        //            }
    }
    else if (event->button() == Qt::RightButton) {
        qDebug() << "Custom item right clicked.";
        event->ignore();
    }
}


void MyItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
    setOpacity(1);
    m_isMove = false;//標(biāo)記鼠標(biāo)左鍵已經(jīng)抬起

    if ((event->modifiers() == Qt::AltModifier) && m_bResizing) {
        m_bResizing = false;
    }
    else {
        QGraphicsItem::mouseReleaseEvent(event);
    }
}

// 鍵盤按下事件處理函數(shù),判斷是否是向下方向鍵,如果是,則向下移動(dòng)圖形項(xiàng)
void MyItem::keyPressEvent(QKeyEvent *event)
{
    qDebug("************MyItem::keyPressEvent*****************");
    if(event->key() == Qt::Key_Down)
        moveBy(0, 10);
}
// 懸停事件處理函數(shù),設(shè)置光標(biāo)外觀和提示
void MyItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{
    qDebug("************MyItem::hoverEnterEvent*****************");
    setCursor(Qt::OpenHandCursor);
    setToolTip("I am item");
}
void MyItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
    //    qDebug("************MyItem::hoverLeaveEvent*****************");
    //    setCursor(Qt::ArrowCursor);
    setOpacity(1);
    m_isMove = false;//標(biāo)記鼠標(biāo)左鍵已經(jīng)抬起

    if ((event->modifiers() == Qt::AltModifier) && m_bResizing) {
        m_bResizing = false;
    }
    else {
        QGraphicsItem::hoverLeaveEvent(event);
    }
}
// 右鍵菜單事件處理函數(shù),為圖形項(xiàng)添加一個(gè)右鍵菜單
void MyItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
    QMenu menu;
    QAction *moveAction = menu.addAction("move back");
    QAction *actAction = menu.addAction("test");
    QAction *selectedAction = menu.exec(event->screenPos());
    if(selectedAction == moveAction) {
        setPos(0, 0);
    }
}
void MyItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    //    qDebug("************MyItem::mouseMoveEvent*****************");
    //    QGraphicsItem::mouseMoveEvent(event);
    this->setZValue(1);
    if ((event->modifiers() == Qt::AltModifier) && m_bResizing) {
        QPointF pos = event->scenePos();
        double dist = sqrt(pow(m_centerPointF.x() - pos.x(), 2) + pow(m_centerPointF.y() - pos.y(), 2));
        //setRect(m_centerPointF.x() - this->pos().x() - dist, m_centerPointF.y() - this->pos().y() - dist, dist * 2, dist * 2);
    }
    else if (event->modifiers() != Qt::AltModifier) {
        qDebug() << "Custom item moved.";
        QGraphicsItem::mouseMoveEvent(event);
        qDebug() << "moved" << pos();
    }
}

2.QGraphicsView封裝成MyView

#ifndef MYVIEW_H
#define MYVIEW_H

#include <QGraphicsView>
#include <QKeyEvent>

class MyView : public QGraphicsView
{
    Q_OBJECT
public:
    explicit MyView(QWidget *parent = 0);
protected:
    void keyPressEvent(QKeyEvent *event);
    void mousePressEvent(QMouseEvent *event);
    void paintEvent(QPaintEvent * event);
    void mouseMoveEvent(QMouseEvent *event);
signals:
public slots:
};

#endif // MYVIEW_H

#include "MyView.h"

MyView::MyView(QWidget *parent) :
    QGraphicsView(parent)
{

    this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//禁用滾動(dòng)條
    this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    this->setDragMode(QGraphicsView::RubberBandDrag);   //鼠標(biāo)手型:ScrollHandDrag
//    this->setDragMode(QGraphicsView::ScrollHandDrag);  //Scene整體拖拽
    //m_graphicsView->setFlag(QGraphicsView::ItemSendsGeometryChanges);
}
void MyView::keyPressEvent(QKeyEvent *event)
{
    qDebug("*********MyView::keyPressEvent***************");
    switch (event->key())
    {
    case Qt::Key_Left :
        scale(1.2, 1.2);
        break;
    case Qt::Key_Right :
        scale(1 / 1.2, 1 / 1.2);
        break;
    case Qt::Key_Up :
        rotate(30);
        break;
    }
    QGraphicsView::keyPressEvent(event);
}
void MyView::mousePressEvent(QMouseEvent *event)
{
    qDebug("************MyView::mousePressEvent*****************");
    QGraphicsView::mousePressEvent(event);
}
void MyView::paintEvent(QPaintEvent *event)
{
    qDebug("************MyView::paintEvent*****************");
    QGraphicsView::paintEvent(event);
}
void MyView::mouseMoveEvent(QMouseEvent *event)
{
    //qDebug("************MyView::mouseMoveEvent*****************");
    QGraphicsView::mouseMoveEvent(event);
}

3. QGraphicsScene封裝成MyScene

#ifndef MYSCENE_H
#define MYSCENE_H

#include <QGraphicsScene>

class MyScene : public QGraphicsScene
{
    Q_OBJECT
public:
    explicit MyScene(QObject *parent = 0);
protected:
    void keyPressEvent(QKeyEvent *event);
    void mousePressEvent(QGraphicsSceneMouseEvent *event);
signals:
public slots:
};

#endif // MYSCENE_H

#include "MyScene.h"


MyScene::MyScene(QObject *parent) :
    QGraphicsScene(parent)
{
    clearFocus();
}
void MyScene::keyPressEvent(QKeyEvent *event)
{
    qDebug("*********MyScene::keyPressEvent***************");
    return QGraphicsScene::keyPressEvent(event);
}
void MyScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
    qDebug("*********MyScene::mousePressEvent***************");
    QGraphicsScene::mousePressEvent(event);
}

4.main函數(shù)

#include "MainWindow.h"
#include "MyItem.h"
#include "MyView.h"
#include "MyScene.h"
#include <QApplication>
#include <QTime>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    //    w.show();

    qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));
    MyScene scene;
    scene.setSceneRect(-200, -150, 400, 300);
    for(int i = 0; i < 5; ++i) {
        MyItem *item = new MyItem;
        item->setColor(QColor(qrand() % 256, qrand() % 256, qrand() % 256));
        item->setPos(i * 50 - 90, -50);
        scene.addItem(item);
    }
    MyView view;
    view.setScene(&scene);
    view.setBackgroundBrush(QPixmap("E:/QtExercise/SceneViewItem/girl.png"));
    view.show();

    return a.exec();
}

運(yùn)行效果
windows10下Qt5.15配置

源碼下載

源碼下載文章來源地址http://www.zghlxwxcb.cn/news/detail-405526.html

到了這里,關(guān)于windows10下Qt5.15配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Qt5.15.10+msvc2019_x86+qwebengine(含mp4)源碼編譯

    Qt5.15.10+msvc2019_x86+qwebengine(含mp4)源碼編譯

    win10 64bit 英文版(或者把“區(qū)域”-“管理”-“非Unicode程序中所使用的當(dāng)前語言”-改為\\\"英語(美國)\\\") 內(nèi)存16g夠用,cpu性能越高越好,硬盤在安裝環(huán)境、下載源碼后,至少還有100g可用空間 https://download.qt.io/archive/qt/5.15/ 1、安裝 vs_community_2019.exe 勾選桌面C++開發(fā)工具 2、安裝

    2024年02月09日
    瀏覽(21)
  • VS2019+OpenCV+Qt5.15.2安裝及工程配置

    VS2019+OpenCV+Qt5.15.2安裝及工程配置

    目錄 一、下載鏈接 1.1 VS2019下載安裝 1.2 OpenCV下載安裝 1.3 Qt5.15下載安裝 二、工程環(huán)境配置 2.1 OpenCV環(huán)境配置 2.1.1? 環(huán)境變量配置 2.1.2 工程屬性表配置 ?2.1.3 重啟vs測試 ?2.2 Qt環(huán)境配置 2.2.1 Qt Creator設(shè)置 ?2.2.2 VS2019配置 ?2.2.3 創(chuàng)建Qt項(xiàng)目 2.2.4 UI 設(shè)計(jì)配置 該文件僅 1.39 MB,是 VS

    2024年02月16日
    瀏覽(41)
  • ubuntu搭建qtcreator(含arm qt5.15且下載、安裝、配置、示例)

    ubuntu搭建qtcreator(含arm qt5.15且下載、安裝、配置、示例)

    1.1 QtCreator選擇 在Qt5.15以前,Qt creator與Qt版本庫是打包在一起發(fā)布的,比如要開發(fā)基于Qt5.14的代碼,則從官網(wǎng)下載,安裝,然后就可以參考Qt5.14的接口,進(jìn)行開發(fā)。 但從Qt5.14以后,集成開發(fā)環(huán)境和Qt版本庫是分開的,如下所示,只有源碼,沒有qt-opensource-xx 安裝Qt,是在安裝

    2024年02月03日
    瀏覽(18)
  • QtCreator12無法識(shí)別Qt5.15.2的安卓SDK與NDK配置解決

    QtCreator12無法識(shí)別Qt5.15.2的安卓SDK與NDK配置解決

    解決方法: 設(shè)置JDK為JDK11 使用Android Studio下載 Android SDK Command-line Tools 10.0 ? 打開Android SDK Location :? ?雙擊打開cmdline-tools 復(fù)制10.0中所有東西到latest中 ? 點(diǎn)擊Manage Kits并選擇Devices? ?然后點(diǎn)擊Android會(huì)彈出下圖窗口,并自動(dòng)更 安裝完成 ? 成功識(shí)別 ?

    2024年01月18日
    瀏覽(18)
  • Win10平臺(tái)VS2017+OpenCV3.4.0+Qt5.12配置教程

    本文專為圖像處理開發(fā)項(xiàng)目人員準(zhǔn)備,涉及多個(gè)軟件和庫的安裝、配置教程,親測可行。 1、 VS 是美國微軟公司(Microsoft)開發(fā)的 集成開發(fā)環(huán)境 “Visual Studio” 的簡稱,是Windows平臺(tái)最流行的應(yīng)用程序集成開發(fā)環(huán)境。 注意區(qū)分:MSVC(Microsoft Visual C++ Compiler)是指微軟的VC編譯

    2024年02月05日
    瀏覽(25)
  • Qt5.14和Qt5.15在線下載

    https://download.qt.io/archive/qt/5.14/5.14.2/ https://download.qt.io/official_releases/online_installers/ qt 安裝太慢的問題如何解決? Qt學(xué)習(xí) QT最新版本下載安裝(QT5.15及QT6.X) 清華大學(xué) Qt鏡像下載中心

    2024年02月12日
    瀏覽(45)
  • Windows+Qt5.14.2+android x86配置與處理adb報(bào)錯(cuò)

    Windows+Qt5.14.2+android x86配置與處理adb報(bào)錯(cuò)

    資源下載 可在部分國內(nèi)鏡像源下載Qt5.14.2:Index of /qt/archive/qt/ | 清華大學(xué)開源軟件鏡像站 | Tsinghua Open Source Mirror 其他工具 android studio:下載 Android Studio 和應(yīng)用工具 - Android 開發(fā)者 ?|? Android Developers sdk manager 、ndk、java 安裝過程 根據(jù)qt5.14.2自助選擇需要安裝的anroid組件等、vs2

    2024年01月20日
    瀏覽(31)
  • Qt5.15.2安裝

    Qt5.15.2安裝

    ????????比如 5.15.2?是完整的 Qt 版本號,第一個(gè)數(shù)字 5 是大版本號(major),第二個(gè)數(shù)字 15?是小版本號(minor),第三個(gè)數(shù)字 2?是補(bǔ)丁號(patch)。 只要前面兩個(gè)數(shù)字相同,Qt 的特性就是一致的,最后的數(shù)字是對該版本的補(bǔ)丁更新。 ????????Qt 5.15 之后已經(jīng)不提供離線

    2024年02月08日
    瀏覽(24)
  • win10下在Qt中使用VTK(安裝VS2017+安裝QT5.9.9+編譯配置VTK8.2.0)

    win10下在Qt中使用VTK(安裝VS2017+安裝QT5.9.9+編譯配置VTK8.2.0)

    作為一個(gè)只淺學(xué)過C語言和C++的純小白,在編譯VTK(visualization toolkit)并與Qt結(jié)合的過程中遇到了很多問題,零零碎碎也看了許多文章教程,但由于版本兼容、過程不完整等問題走了許多彎路,最后東拼西湊勉強(qiáng)完成,故寫下這篇文章供大家參考。 本文主要目的是安裝vs2017,

    2024年02月11日
    瀏覽(28)
  • QT5.15離線安裝

    QT5.15離線安裝

    在線安裝后,將所有的資源打成壓縮包??截愔亮硗庖慌_(tái)電腦,進(jìn)行如下設(shè)置: 1、解壓 2、進(jìn)入路徑:QTToolssdktoolshareqtcreatorQtProject. 3、修改QtCreator.ini,將所有的絕對路徑修改為實(shí)際存放路徑。 4、打開qtcreator文件夾,將里面的六個(gè)xml文件中絕對路徑修改為實(shí)際存放路徑。

    2024年02月13日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包