Qt 5.12 使用TextInput输入中文有问题

qml熟悉了个大概,打算输入文字和后台交互的时候发现默认的英文输入法切换不了中文输入法了,因为我把win10系统的输入法设置为默认英文,其他程序输入框中按shift即可切换输入法,但是我写的qt程序就不行,对比了一下其他可以输入中文的qt程序,发现是qml文件引用方式的问题

我写的qml文件是用QQuickWidget设置source引用的

mainWindow::mainWindow(QWidget *parent)
    : QWidget(parent)
{ 
    m_contentView = new QQuickWidget();
    m_contentView->setSource(QUrl("qrc:///Qml/mainWindow.qml")); //设置对应的qml文件

    // qml对应的widget添加到本窗口
    QVBoxLayout *layout = new QVBoxLayout;
    layout->setContentsMargins(0, 0, 0, 0);
    layout->setSpacing(0);
    layout->addWidget(m_contentView);
    setLayout(layout);
}

改成

mainWindow::mainWindow(QWidget *parent)
    : QWidget(parent)
{
    this->resize(1000, 600);

    m_contentView = new QQuickView();
    m_contentView->setSource(QUrl("qrc:///Qml/mainWindow.qml")); 

    QWidget *pViewContainer = this->createWindowContainer(m_contentView, this);
    pViewContainer->resize(size());
}

mainWindow继承自QWidget,可以不用改,但是QQuickView需要手动delete,不然点击关闭按钮后,程序会阻塞住。

然后mainWindow.qml中的TextField控件就可以直接按shift输入中文了

发布了275 篇原创文章 · 获赞 46 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/youyudexiaowangzi/article/details/103592622