Использование экранной клавиатуры Windows 10 в приложении QT [закрыто]

Я пытаюсь вызвать экранную клавиатуру Windows для приложения, разработанного с использованием QT /C ++. В настоящее время у меня есть настраиваемая экранная клавиатура, но она выглядит не очень хорошо на всех размерах экрана, поэтому я хочу использовать Windows родную. Я хочу поднять клавиатуру автоматически, когда фокус ввода находится на текстовом поле. Я новичок в QT, но не в C ++. Я проверил несколько других подобных вопросов, но, похоже, эти решения не сильно помогли.

Изменить. Приведенные ниже решения не поднимают клавиатуру. Они компилируются без ошибок, но на самом деле они не вызывают osk.

void MainWindow::on_Button_released()
{
    ui->Button->setChecked(true);

    //Attempt 1
    //ShellExecute( NULL, NULL, L"osk.exe", NULL, NULL, SW_SHOW );

    //Attempt 2
    /* QObject *parent;
         QString program = "./osk.exe";
         QStringList arguments;
         //arguments << "-b" << "-t" << "input.txt";

         QProcess *myProcess = new QProcess(parent);
         myProcess->start(program);//, arguments);
    */

    //Attempt 3
    /* QProcess *process = new QProcess(this);
    QString file = QDir::homepath + "/tabtip.exe";
    process->start(file);
    */

    //Attempt 4
    /* 
    QProcess::execute ("start C:\\Windows\\System32\\osk.exe");
    */


    //Attempt 5
    system ("start C:\\Windows\\System32\\osk.exe");

}

** Попытка 5, в частности, выдает ошибку, детализирующую, что файл не может быть найден, и предлагает проверить, что был указан правильный путь. Я уже проверил путь, и osk.exe работает нормально - не из моего приложения.

4 голоса | спросил Kristina Gauthier 24 Maypm18 2018, 15:58:18

1 ответ


0
Чтобы отобразить его, просто запустите ---- +: = 0 =: + ---- .Чтобы избавиться от этого (*) (предупреждение - недокументированное поведение):Я знаю, что это работает на Windows 10, и, вероятно, еще до Windows 7.(*) Я в долгу перед @ zett42 за эту информацию (но я требую кредит :)Редактировать: до меня дошло, что запуск ---- +: = 2 =: + ---- требует небольшого изящества.Вы можете сделать это так:Вызовы ---- +: = 4 =: + ---- нужны только в 32-битном приложении, и вам нужно связать с помощью ---- +: = 5 =: + ---- .
ответил Paul Sanders 24 Maypm18 2018, 16:22:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132