韦德斯 2023-09-18 17:45 采纳率: 42.9%
浏览 14
已结题

widget如何引用qt的虚拟输入法键盘

widget如何调用qt自带的虚拟键盘?如果只在main.cpp的在QApplication对象创建之前插入代码:

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

会出现这样独立在widget窗口之外的情景:

img

而我的需求是这个键盘在widget内,请问如何解决?

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-18 20:06
    关注

    【以下回答由 GPT 生成】

    解决方案:

    要在Qt中将虚拟输入法键盘应用到widget上,可以按照以下步骤进行操作:

    1. 首先,确保你已经在项目中包含了Qt Virtual Keyboard模块。在.pro文件中添加以下行:
    QT += quickwidgets virtualkeyboard
    
    1. 然后,在你的widget类中,添加一个TextFieldTextEdit控件,并将其作为主显示区域。例如:
    #include <QQuickWidget>
    #include <QUrl>
    
    class MyWidget : public QWidget {
        Q_OBJECT
    
    public:
        MyWidget(QWidget *parent = 0) : QWidget(parent) {
            // 创建一个QQuickWidget作为主显示区域
            QQuickWidget *quickWidget = new QQuickWidget(this);
    
            // 加载QML文件
            quickWidget->setSource(QUrl("qrc:/main.qml"));
        }
    };
    
    1. 接下来,在.qrc文件中添加main.qml文件,并在其中放置一个TextFieldTextEdit控件以供键盘输入。例如:
    import QtQuick 2.15
    import QtQuick.Controls 2.15
    import QtQuick.Layouts 1.3
    import QtQuick.VirtualKeyboard 2.15
    
    Item {
        width: 400
        height: 300
    
        ColumnLayout {
            anchors.fill: parent
            anchors.margins: 10
    
            TextField {
                id: textInput
                width: parent.width
                height: parent.height
            }
        }
    }
    
    1. 最后,在你的main.cpp文件中,确保在创建QApplication对象之前设置QT_IM_MODULE环境变量为qtvirtualkeyboard,并将QQuickWidget设置为QMainWindow的central widget。例如:
    #include <QApplication>
    #include <QMainWindow>
    #include "mywidget.h"
    
    int main(int argc, char *argv[]) {
        QApplication a(argc, argv);
    
        // 设置QT_IM_MODULE环境变量
        qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
    
        QMainWindow mainWindow;
        MyWidget *widget = new MyWidget(&mainWindow);
        mainWindow.setCentralWidget(widget);
        mainWindow.show();
    
        return a.exec();
    }
    

    这样,在运行你的应用程序时,会在widget的内部显示虚拟键盘。

    希望这能帮助到你!如果你还有任何疑问,请随时告诉我。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月14日
  • 已采纳回答 6月14日
  • 创建了问题 9月18日

悬赏问题

  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?