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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.