LINUX.ORG.RU

[Qt] Qt::Key кириллица

 


0

0

Перехватываю нажатие на клавиш, сравниваю его со значениями Qt::Key_...
Например Qt::Key_O срабатывает на маленькую и большую O английского алфавита, а вот русских аналогов нету, надо бы что бы еще срабатывало на букву Щ,щ.
Может в Qt есть что нибудь готовое для таких случаев?

★

> Например Qt::Key_O срабатывает на маленькую и большую O английского алфавита, а вот русских аналогов нету, надо бы что бы еще срабатывало на букву Щ,щ.

А Вы таки уверены, что у всех раскладки QWERTY и ЙЦУКЕН соответственно? Смело.

kemm ★
()

// может прокатит if (k!=Qt::Key_unknown) { switch(k & Qt::Key_unknown) { case Qt::Key_O { // ну очень криво } } } // а может и нет :)

anonymous
()

А может лучше карту с юникод кодами клавиш и циклик с проверками?

wyldrodney ☆
()
void MyWidget::keyPressEvent( QKeyEvent * e )
{
    if ( !e->text().isEmpty() )
    {
        const QChar letter = e->text().at( 0 );
        if ( letter == QChar( 0x0429 ) || letter == QChar( 0x0449 ) )
        {
            // 'щ' OR 'Щ' pressed
            ...
        }
        ...
    }
}
Dendy ★★★★★
()
Ответ на: комментарий от Dendy
void w::keyPressEvent( QKeyEvent* e ) {
	if( QChar::toCaseFolded( (uint) e->key() ) == 0x449 ) {
		// 'щ' OR 'Щ' pressed
	}
}
summatus ★
()

Программа предполагается исключительно для русскоязычных пользователей?

m0rph ★★★★★
()

а ты найди объявление Qt::Key_O, посмотри как сделано и сделай аналогично.

name_no ★★
()

я точно не помню классы из KDE3 где я это видел, но там используются какие-то X11 вызовы для трансляции кодов текущей раскладки в литинские. Ищи от класса KAction - он умеет делать хоткеи, которые работают в любой раскладке.

alex_custov ★★★★★
()
Ответ на: комментарий от m0rph

> Программа предполагается исключительно для русскоязычных пользователей?

Пока что да, пишу для себя. Но универсальные варианты более интересны. Думал может Qtшники предусмотрели что нибудь на такой случай.

n4ela ★
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.