QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin)

这篇具有很好参考价值的文章主要介绍了QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、背景

在使用QT进行嵌入式应用开发时,往往程序最终的运行设备是有触屏的设备。因此,不可避免的会遇到虚拟键盘和中文输入的问题。QT自带一个虚拟键盘,可以在构建套件/plugins/platforminputcontexts目录下看到2个文件:

  • qtvirtualkeyboardplugin.dll
  • qtvirtualkeyboardplugin.dll.debug

QT自带的虚拟键盘屏幕占比较大,而且很容易挡住输入框,默认不能拖动,不太完美。本就介绍一种替代方式,就是在QT程序中使用GooglePinyin输入法实现虚拟键盘和中文录入。

1、环境

操作系统:windows10专业版
QT版本:5.15.2
QT安装目录:D:\Qt
QT编译套件1:MinGW64
QT编译套件2:MSVC2019_64

2、下载QtInputMethod_GooglePinyin源码

1、下载地址:
https://gitee.com/tgtsml/QtInputMethod_GooglePinyin
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
2、下载后可以看到压缩包如下图:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
3、解压缩后如下图:QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
4、文件夹的内容如下:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记

3、使用MinGW64构建套件编译

3.1 编译QtInputMethod_GooglePinyin源码

1、通过qtcreator打开tgtsmlInputContextPlugin.pro工程,本例采用的MinGW64构建套件。如下图:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
2、然后分别以debug模式和release模式对tgtsmlInputContextPlugin进行重新构建,会在tgtsmlInputContextPlugin.pro同级目录下生成一个build目录,如下图:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记

3.2、部署tgtsmlInputContextPlugin输入法插件

1、把上一步编译生成的build/bin/platforminputcontexts目录下的

  • tgtsmlInputContextPlugin.dll
  • tgtsmlInputContextPlugind.dll

如下图:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
复制到D:\Qt\5.15.2\mingw81_64\plugins\platforminputcontexts目录下。

3.3、运行测试程序

1、可以看到下载的源码中包括一个测试程序demo,关键引入输入法虚拟键盘的代码如下:

qputenv("QT_IM_MODULE", QByteArray("tgtsml"));

如下图:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
这样当光标聚焦在输入文本框时,会自动弹出虚拟键盘。
运行效果如下:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记

4、使用MSVC2019_64构建套件编译

4.1 编译QtInputMethod_GooglePinyin源码

1、在项目选项卡中对当前项目的构建套件切换至MSVC2019_64构建套件上,然后对项目进行重新构建,然后这时出现了很多错误,如下图:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
2、解决这些问题需要做2个方面的修改。
2.2.1 第1是把所有pro的换行符由Unix(LF)改为Windows(CRLF)
如下,原来是这样:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
改成下面这样:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
2.2.2 第2是在demo.pro、googlepinyin.pro、plugin.pro 3个文件中增加中文处理的配置,如下:

# 解决msvc构建套件下qtcreator控制台日志中文乱码问题
msvc {
    QMAKE_CFLAGS += /utf-8
    QMAKE_CXXFLAGS += /utf-8
}

如下图所示:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
3、然后再重新构建,就能正常编译过去了。同样使用debug模式和release模式编译完毕后会在会在tgtsmlInputContextPlugin.pro同级目录下生成一个build目录,如果之前在MinGW64构建套件下已生成了,建议先删除,或者在pro文件中指定使用不同构建套件时生成的库放到不同位置,如下:

# 指定输出目录
!msvc {
    DESTDIR = ../../wongoing_plugin_bin
}
msvc {
    DESTDIR = ../../wongoing_plugin_bin_msvc
}

4.2、部署tgtsmlInputContextPlugin输入法插件

1、把上一步编译生成的build/bin/platforminputcontexts目录下的

  • tgtsmlInputContextPlugin.dll
  • tgtsmlInputContextPlugind.dll
  • tgtsmlInputContextPlugind.pdb

如下图:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
复制到D:\Qt\5.15.2\msvc2019_64\plugins\platforminputcontexts目录下。

4.3、运行测试程序,与步骤3.3相同。

5、修改QtInputMethod_GooglePinyin源码解决在分屏情况下虚拟键盘显示越界及不能跨屏显示的问题

1、当我的笔记本电脑有外接了一个显示时(扩展模式)使用时会出现2个问题,第1个问题是虚拟键盘不能显示到扩展屏幕上,虽然我的demo窗口显示在扩展屏幕。第2个问题,就是当demo窗口(输入框窗口)在主屏幕最右测时,虚拟键盘会有一部分显示不出来,就是显示越界。具体如下图:
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
上图是虚拟键盘不能跨屏幕显示,只能显示在主屏上。
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
上图是右侧显示不完整的情况。
2、修改plugin项目中的tgtsmlplatforminputcontext.cpp文件中的void TgtsmlPlatformInputContext::showInputPanel()中的代码,如下:

void TgtsmlPlatformInputContext::showInputPanel()
{
    if(!m_keyboard){
        m_keyboard = new KeyboardForm;
        connect(m_keyboard, &KeyboardForm::sendKeyToFocusItem, this, &TgtsmlPlatformInputContext::sendKeyToFocusItem);
    }
    if(m_keyboard->isHidden())m_keyboard->show();
    QWidget *widgetTmp = qobject_cast<QWidget*>(m_focusitem);
    if(widgetTmp){        
        //注释以下代码,因为没有考虑扩展屏幕的坐标问题
//        QPoint widgetGlobalPos = widgetTmp->mapToGlobal(QPoint(0, 0));
//        if(widgetGlobalPos.x() < 0){
//            widgetGlobalPos.setX(0);
//        }
//        if(widgetGlobalPos.y() < 0){
//            widgetGlobalPos.setY(0);
//        }
//        if(qApp->desktop()->width() - widgetGlobalPos.x() < m_keyboard->width()){
//            widgetGlobalPos.setX(qApp->desktop()->width() - m_keyboard->width());
//        }
//        if(qApp->desktop()->height() - widgetGlobalPos.y() - 30 < m_keyboard->height()){
//            widgetGlobalPos.setY(widgetGlobalPos.y() - m_keyboard->height() - 10);
//        }
//        else{
//             widgetGlobalPos = widgetGlobalPos + QPoint(0,30);
//        }
//        m_keyboard->move(widgetGlobalPos);

        //改为以下代码,增加考虑扩展屏幕的代码
        //获取当前屏幕及屏幕几何矩形坐标
        int currentScreen = qApp->desktop()->screenNumber(widgetTmp);
        if (currentScreen <  0)
        {
        	currentScreen = 0;
		}
        QScreen *screen = QGuiApplication::screens().at(currentScreen);
        QRect rect = screen->geometry();
        QPoint widgetGlobalPos = widgetTmp->mapToGlobal(QPoint(0, 0));
        if(widgetGlobalPos.x() < rect.x()) {
            widgetGlobalPos.setX(rect.x());
        }
        if (widgetGlobalPos.y() < rect.y())
        {
            widgetGlobalPos.setY(rect.y());
        }
        if(rect.width() - widgetGlobalPos.x() < m_keyboard->width()) {
            widgetGlobalPos.setX(rect.width() - m_keyboard->width());
        }
        if(rect.height() - widgetGlobalPos.y() - 30 < m_keyboard->height()) {
            widgetGlobalPos.setY(widgetGlobalPos.y() - m_keyboard->height() - 10);
        }
        else {
            widgetGlobalPos = widgetGlobalPos + QPoint(0,30);
        }
        m_keyboard->move(widgetGlobalPos);
    }
}

3、修改后重新编译、重新部署,再运行demo程序就正常了。

6、修改QtInputMethod_GooglePinyin源码解决在Linux Arm环境下部分应用资源冲突导致无法加载qss和ota字体的问题

1、当在嵌入式Linu Arm环境中使用GooglePinyin虚拟键盘时,如果某个Qt应用使用了资源文件可能会导致GooglePinyin虚拟键盘无法加载:/res/stylesheet.qss和:res/FontAwesome.otf从而无法显示虚拟键盘进而导致程序崩溃。
QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin),qt,qt,学习,笔记
2、要解决这个问题,需要修改plugin项目中的keyboardform.cpp文件中的KeyboardForm::KeyboardForm(QWidget *parent)
: QWidget(parent)中的代码,如下:

KeyboardForm::KeyboardForm(QWidget *parent)
    : QWidget(parent)
{
    character_btns_list.clear();
    current_mode = InputMode::en;
    upper_mode = false;
    m_symbol_page = 0;
    this->setFixedSize(800,250);
    int keyboard_btn_width = this->width()/11.5;
    int keyboard_btn_height = this->height()/5.0;
    //设置主窗体样式
    this->setAttribute(Qt::WA_TranslucentBackground);
    this->setWindowFlags(Qt::Tool | \
                         Qt::FramelessWindowHint | \
                         Qt::WindowStaysOnTopHint | \
                         Qt::WindowDoesNotAcceptFocus);
    //加载QSS样式表
//    QFile qss(":/res/stylesheet.qss");
//    if(false == qss.open(QFile::ReadOnly))return;
//    this->setStyleSheet(qss.readAll());
//    qss.close();
    //以上代码在窗体及容器控件的多层嵌套情况下会导致qss样式资源无法加载,改为以下代码
    QFile qss(":/res/stylesheet.qss");
    if (qss.exists() && qss.open(QFile::ReadOnly))
    {
        this->setStyleSheet(qss.readAll());
        qss.close();
    }
    else
    {
        QString strcss = "" \
                "QWidget{background-color:black;}" \
                "QPushButton{font:25px;background-color:gray;color:white;border:2px solid black;border-radius:10px;}" \
                "QPushButton#function_button{background-color:rgb(80,80,80);color:rgb(200,200,200);font:20px;}" \
                "QPushButton:hover{background-color:green;color:white;}" \
                "QPushButton:pressed,QPushButton#function_button::pressed{background-color:red;color:white;}" \
                "QPushButton#function_button:checked{background-color:rgb(200,100,50);color:yellow;}" \
                "QPushButton#hanzichangepage,QPushButton#hanzicandidates{background-color:transparent;color:white;}" \
                "QPushButton#hanzichangepage:pressed{color:red;}" \
                "QPushButton#hanzichangepage:disabled{color:gray;}" \
                "QPushButton#emoji{background-color:rgb(80,80,80);color:yellow;}" \
                "QPushButton#emoji:hover{color:red;}" \
                "QPushButton#emoji:pressed{color:blue;}" \
                "QLabel{background-color:rgba(255,255,255,80);border-radius:2px;color:white;font:15px;margin-left: 5px;}";
        this->setStyleSheet(strcss);
    }

    //图标字体
//    int fontId = QFontDatabase::addApplicationFont(":/res/FontAwesome.otf");
//    QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);
//    QFont btnicofont(fontName);
//    btnicofont.setPixelSize(10);

    //以上代码在窗体及容器控件的多层嵌套情况下会导致字体资源无法加载,改为以下方式
    QFont btnicofont(QString("Arial"));
    btnicofont.setPixelSize(10);
    if (QFile::exists(":res/FontAwesome.otf"))
    {
        int fontId = QFontDatabase::addApplicationFont(":/res/FontAwesome.otf");
        QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);
        btnicofont.setFamily(fontName);
    }
#ifdef Q_OS_LINUX
    else if (QFile::exists("/usr/share/font-awesome/fonts/FontAwesome.otf"))
    {
        int fontId = QFontDatabase::addApplicationFont("/usr/share/font-awesome/fonts/FontAwesome.otf");
        QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);
        btnicofont.setFamily(fontName);
    }
#endif
    else
    {
        qWarning() << "can not find FontAwesome.otf";
    }

    //单行布局
    QHBoxLayout *hb[6];
    for(int i=0; i<6; i++)
    {
        hb[i] = new QHBoxLayout();
        hb[i]->setMargin(0);
        i == 1 ? hb[i]->setSpacing(2) : hb[i]->setSpacing(0);
    }

    widget_pinyin = new QWidget(this);
    widget_pinyin->setFixedHeight(keyboard_btn_height);
    //拼音缓存
    m_label_pinyin = new QLabel(this);
    m_label_pinyin->setFixedHeight(keyboard_btn_height*0.4);
    hb[0]->addWidget(m_label_pinyin);
    hb[0]->addStretch(1);

    //汉子缓存
    for(int i=0; i<chinesecharacters_number; i++)
    {
        QPushButton *btn = new QPushButton(this);
        btn->setFixedHeight(keyboard_btn_height*0.6);
        hb[1]->addWidget(btn);
        if(i != chinesecharacters_number - 1) hb[1]->addStretch(1);
        if (i == 0 || i == chinesecharacters_number-1)
        {
            change_chinese_characters_page_list.append(btn);
            btn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
            btn->setFont(btnicofont);
            btn->setText(i == 0 ? QString(QChar(0xf0d9)) : QString(QChar(0xf0da)));
            btn->setObjectName("hanzichangepage");
            i == 0 ? \
            connect(btn, &QPushButton::clicked, this, &KeyboardForm::chineseCharactersUpdatePrevious) :
            connect(btn, &QPushButton::clicked, this, &KeyboardForm::chineseCharactersUpdateNext);
        }
        else
        {
            chinese_characters_list.append(btn);
            btn->setObjectName("hanzicandidates");
            connect(btn, &QPushButton::clicked, this, &KeyboardForm::chineseCharactersSelected);
        }
    }

    QVBoxLayout *vb_pinyin = new QVBoxLayout(widget_pinyin);
    vb_pinyin->addLayout(hb[0]);
    vb_pinyin->addLayout(hb[1]);
    vb_pinyin->setMargin(0);
    vb_pinyin->setSpacing(0);

    widget_keyboard = new QWidget(this);
    widget_keyboard->setFixedHeight(keyboard_btn_height*4.0);

    //键盘
    for(int i=0; i<29; i++)
    {
        QPushButton *btn = new QPushButton(QChar(keyboard_characters[i]),this);
        btn->setFixedSize(keyboard_btn_width, keyboard_btn_height);
        character_btns_list.append(btn);
        connect(btn, &QPushButton::clicked, this, &KeyboardForm::characterButtonClicked);
    }
    //第一排字母:0-9
    for(int i=0; i<10; i++)
    {
        hb[2]->addWidget(character_btns_list.at(i));
    }
    QPushButton *btn_backspace = new QPushButton(QChar(0xf060));
    btn_backspace->setFont(btnicofont);
    btn_backspace->setFixedSize(keyboard_btn_width*1.5, keyboard_btn_height);
    btn_backspace->setObjectName("function_button");
    hb[2]->addWidget(btn_backspace);
    connect(btn_backspace, &QPushButton::clicked, this, &KeyboardForm::btnBackspaceClicked);
    //第二排字母:10-18
    hb[3]->addStretch(1);
    for(int i=10; i<19; i++)
    {
        hb[3]->addWidget(character_btns_list.at(i));
    }
    QPushButton *btn_enter = new QPushButton("Enter");
    btn_enter->setFixedSize(keyboard_btn_width*1.5, keyboard_btn_height);
    btn_enter->setObjectName("function_button");
    hb[3]->addWidget(btn_enter);
    hb[3]->addStretch(1);
    connect(btn_enter, &QPushButton::clicked, this, &KeyboardForm::btnEnterClicked);
    //第三排字母:20-26
    QPushButton *btn_upper = new QPushButton(QChar(0xf062));
    btn_upper->setFixedSize(keyboard_btn_width*1.5, keyboard_btn_height);
    btn_upper->setFont(btnicofont);
    btn_upper->setObjectName("function_button");
    hb[4]->addWidget(btn_upper);
    connect(btn_upper, &QPushButton::clicked, this, &KeyboardForm::btnUpperClicked);
    for(int i=19; i<29; i++)
    {
        hb[4]->addWidget(character_btns_list.at(i));
    }
    character_btns_list.append(btn_upper);
    //第四排功能键
    QPushButton *btn_symbols = new QPushButton(".?123");
    btn_symbols->setFixedSize(keyboard_btn_width*1.5, keyboard_btn_height);
    btn_symbols->setObjectName("function_button");
    hb[5]->addWidget(btn_symbols);
    connect(btn_symbols, &QPushButton::clicked, this, &KeyboardForm::btnSymbolsClicked);
    QPushButton *btn_language = new QPushButton(QChar(0xf0ac));
    btn_language->setFixedSize(keyboard_btn_width, keyboard_btn_height);
    btn_language->setFont(btnicofont);
    btn_language->setObjectName("function_button");
    hb[5]->addWidget(btn_language);
    connect(btn_language, &QPushButton::clicked, this, &KeyboardForm::btnLanguageClicked);
    QPushButton *btn_blankspace = new QPushButton("English");
    btn_blankspace->setFixedHeight(keyboard_btn_height);
    hb[5]->addWidget(btn_blankspace);
    character_btns_list.append(btn_blankspace);
    connect(btn_blankspace, &QPushButton::clicked, this, &KeyboardForm::btnBlankspaceClicked);
    QPushButton *btn_emoji = new QPushButton(QChar(0xf118));
    btn_emoji->setFixedSize(keyboard_btn_width, keyboard_btn_height);
    btn_emoji->setFont(btnicofont);
    btn_emoji->setObjectName("emoji");
    hb[5]->addWidget(btn_emoji);
    connect(btn_emoji, &QPushButton::clicked, this, &KeyboardForm::btnEmojiClicked);
    QPushButton *btn_hidekeyboard = new QPushButton(QString(QChar(0xf11c)).append(QChar(0xf103)));
    btn_hidekeyboard->setFixedSize(keyboard_btn_width*1.5, keyboard_btn_height);
    btn_hidekeyboard->setFont(btnicofont);
    btn_hidekeyboard->setObjectName("function_button");
    hb[5]->addWidget(btn_hidekeyboard);
    connect(btn_hidekeyboard, &QPushButton::clicked, this, &KeyboardForm::hideKeyboard);

    QVBoxLayout *vb_keyboard = new QVBoxLayout(widget_keyboard);
    vb_keyboard->setMargin(0);
    vb_keyboard->setSpacing(0);
    for(int i=2; i<6; i++)
    {
        vb_keyboard->addLayout(hb[i]);
    }

    QVBoxLayout *vb_system = new QVBoxLayout(this);
    vb_system->setMargin(0);
    vb_system->setSpacing(0);
    vb_system->addStretch(1);
    vb_system->addWidget(widget_pinyin);
    vb_system->addWidget(widget_keyboard);
    widget_pinyin->hide();

    updateButtonStateOfChineseCharacters();
}

7、完整源码下载

修改后的完整源码下载地址文章来源地址https://www.toymoban.com/news/detail-656764.html

到了这里,关于QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu 22.04安装拼音输入法(qt各版本等全控件支持,非百度搜狗等)

    百度搜狗拼音输入法在ubuntu 22.04上时常出现一些窗口无法输入中文的情况,为此引入Fcitx5更佳! 在Ubuntu操作系统上,有几种可供选择的拼音输入法。以下是其中一些常用的拼音输入法: Fcitx:Fcitx 是一个开源的输入法框架,在Ubuntu上得到广泛应用。它支持多种输入法引擎,包

    2024年02月04日
    浏览(40)
  • Qt5.15.2 Webassembly源码裁剪编译

    第一步:      .configure -debug-and-release -opensource -prefix \\\"D:qt-everywhere-srccompFile\\\" -platform win32-g++ -nomake examples 第二步:     mingw32-make -j4 第三步:     mingw32-make install   编译core与gui模块:     C:Qt5.15.2yuanmaqt-everywhere-src-5.15.2qtbasesrcgui     C:Qt5.15.2yuanmaqt-everywhere-src

    2024年02月10日
    浏览(43)
  • jetson-nano编译qt5.15.2带opengl,xcb

    项目需求原因,需要编译高版本qt到jetson-nano板子,历经10天来回折腾,终于是成功了。期间历经交叉编译失败,然后转直接编译,然后尝试各种版本的坑,最后整理的方法异常简单,只需6小时左右即可流畅在板子上编译成功。文章最后有我编译好的qt-5.15.2版本链接。 友情提

    2023年04月09日
    浏览(33)
  • QT5.15.2搭建Android编译环境及使用模拟器调试(全)

    地址:下载 我电脑的windows的,所以选windows 由于官方安装过程非常非常慢,一定要跟着步骤来安装,不然慢到怀疑人生 1)打开\\\"命令提示符\\\"(开始 - Windows 系统 - 命令提示符) 或者 “win+R” -输入cmd 找到刚才的exe 命令行输入以下命令(exe位置根据自己实际的),然后回车

    2024年02月04日
    浏览(39)
  • Linux Qt5.15.2 编译QWebEngine源码支持音视频H264

    默认自带的QWebEngine 因版权问题不支持音视频功能,需要自己编译源码以支持。 平台:Linux(UOS V20 1050) Qt:5.15.2 下载 Qt 5.15.2 对应版本源码,使用镜像网站或者Qt Maintenance Tool工具下载。 配置 Qt 环境变量 将以下内容追加到bashrc文件后 刷新使其生效 这个阶段可以预先安装所

    2024年02月05日
    浏览(41)
  • 学习Opencv(蝴蝶书/C++)代码——1.macOS下安装OpenCV4.8.0和QT5.15(C++)

    先看看vscode里怎么弄c++,详见:mac下vscode配置c++环境 同时记得把cmake下载好,路径配置好 直接从官网教程开始(事实证明不是很全面,还是有很多问题需要额外找解决方案): https://docs.opencv.org/4.x/d0/db2/tutorial_macos_install.html 一般是有两种安装方式: 直接安装对应平台的预编

    2024年01月18日
    浏览(56)
  • Qt5.15.2安装

            比如 5.15.2 是完整的 Qt 版本号,第一个数字 5 是大版本号(major),第二个数字 15 是小版本号(minor),第三个数字 2 是补丁号(patch)。 只要前面两个数字相同,Qt 的特性就是一致的,最后的数字是对该版本的补丁更新。         Qt 5.15 之后已经不提供离线

    2024年02月08日
    浏览(48)
  • ubuntu安装qt5.15

    官方下载地址 中国科学技术大学 清华大学 南京大学 中国互联网络信息中心 在线安装包下载:

    2024年02月13日
    浏览(38)
  • QT5.15离线安装

    在线安装后,将所有的资源打成压缩包。拷贝至另外一台电脑,进行如下设置: 1、解压 2、进入路径:QTToolssdktoolshareqtcreatorQtProject. 3、修改QtCreator.ini,将所有的绝对路径修改为实际存放路径。 4、打开qtcreator文件夹,将里面的六个xml文件中绝对路径修改为实际存放路径。

    2024年02月13日
    浏览(31)
  • QT新版本安装(5.15以上)——Qt 镜像网站——Qt5.15.2镜像安装

    由于QT版本升级到6.以上版本,在线安装可能找会存在找不到到相关想要的版本。如5.15的版本。 解决办法:还采用在线安装的方法,添加版本的镜像路径(URL)的方法进行安装。 在线安装软件连接: 链接:https://pan.baidu.com/s/1sXqYhfHNNmKCzJf4Xdd0Zg?pwd=o2j2  提取码:o2j2 中国科学技

    2024年04月13日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包