Russian Qt Forum
Ноябрь 23, 2024, 23:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: почему QTableView может не ловить Qt::Key_Insert?  (Прочитано 10831 раз)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #15 : Октябрь 19, 2011, 13:02 »

Вот работающий пример:
Код
C++ (Qt)
#include <QApplication>
#include <QTableView>
#include <QStandardItemModel>
#include <QKeyEvent>
 
class TableView : public QTableView
{
public:
TableView( QWidget* p = 0 )
: QTableView( p )
{}
 
void keyPressEvent( QKeyEvent* e )
{
qWarning( "key=%d", e->key() );
 
switch( e->key() )
{
case Qt::Key_Insert:
qWarning( "Insert key pressed..." );
default:
break;
}
 
QTableView::keyPressEvent( e );
}
};
 
int main( int argc, char** argv )
{
QApplication app( argc, argv );
 
TableView tv;
 
QStandardItemModel model;
tv.setModel( &model );
 
QStringList colorNames = QColor::colorNames();
 
model.insertColumns( 0, 1 );
model.insertRows( 0, colorNames.size() );
 
model.setHeaderData( 0, Qt::Horizontal,
"Known Colors", Qt::DisplayRole );
 
for( int i = 0; i < colorNames.size(); ++i )
{
QModelIndex index( model.index( i, 0, QModelIndex() ) );
model.setData( index, colorNames[i], Qt::DisplayRole );
model.setData( index, QColor( colorNames[i] ), Qt::DecorationRole );
}
 
tv.show();
return app.exec();
}
 
С Insert никаких проблем нет.
Записан

Qt 5.11/4.8.7 (X11/Win)
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #16 : Октябрь 19, 2011, 13:07 »

Вот работающий пример:

С Insert никаких проблем нет.
У меня тоже нет. В смысле скомпильнул, попробовал -  нет проблем.
« Последнее редактирование: Октябрь 19, 2011, 13:17 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #17 : Октябрь 19, 2011, 13:08 »

Я ж те советовал в скан коде позырить, вообще 82 код приходит или нет. В keyPressEvent всмысле.
Не приходит, уже проверил.
ссылка на проект
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #18 : Октябрь 19, 2011, 14:15 »

а оператор and в 11 ввели? а то пришлось заменять его на && чтоб проект собрался.

твоя проблема в том, что у тебя инсерт висит на actionNewElement в качестве хоткея - он и перехватывает нажатие.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #19 : Октябрь 19, 2011, 15:20 »

Вот вот, я тоже так думал Улыбающийся

Вот только проект не захотел запускаться - версии dll'ok его не устроили )
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #20 : Октябрь 19, 2011, 20:19 »

твоя проблема в том, что у тебя инсерт висит на actionNewElement в качестве хоткея - он и перехватывает нажатие.
О, спасибо. а я и забыл про эту пиктограмму, к гую хотел потом вернуться - больше дел в других местах было...
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
iroln
Гость
« Ответ #21 : Октябрь 19, 2011, 22:17 »

Bepec

А я бы хотел уточнить по поводу nativeScanCode. Просто тут тоже возникла проблема. Написал программку на PyQt. Собрал её с помощью cx_Freeze в бинарник. Запускаю у себя на машине (Windows 7 ENG), хоткеи работают при любой раскладке, запускаю на целевой машине (там Windows 7 RUS), хоткеи отваливаются на русской раскладке (прямо как в GTK+ программах). Я вот теперь сижу туплю, то ли это проблема появилась при сборке, то ли изначально в Qt сидит. Думаю, попробовать нативные коды, но это ж надо всё переписывать, а у меня там не один обработчик keyEvent. У вас подобная проблема с хоткеями и раскладками была?
Записан
Bepec
Гость
« Ответ #22 : Октябрь 20, 2011, 07:05 »

Я ж писал, если использовать Qt::клавиша "какая-то", то на русских версиях ОС оно будет игнорировать русскую раскладку. Вообще.

Нативные же коды не меняются (стандарт они.) Разве что для мультимедийных клавиш могут изменяться.

Потому я уже давно енумчик со скан кодами делаю на такой случай. То же самое получается, только не зависит от версии ОС и прочая Улыбающийся
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.161 секунд. Запросов: 22.