crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Послать сигнал по нажатию клавиш
FenixTES
  опции профиля:
сообщение 20.11.2009, 10:04
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 14.11.2009
Пользователь №: 1230

Спасибо сказали: 0 раз(а)




Репутация:   0  


нужно сделать через QAction, я то пробывал, даже делал как в вассистенте(тока там чуть другой пример), но ничего не работало
QAction *qatmp = new QAction(this);
    qatmp->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Enter));
    connect(qatmp,SIGNAL(triggered()), qpbSend, SLOT(slot1()));

пробыват так
qatmp->setShortcut(QKeySequence(tr("CTRL+ENTER")));

и так
qatmp->setShortcut(QKeySequence(tr("Ctrl+Enter")));

всеравно почему то не пашет...
может я что-то неправильно сделал?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.11.2009, 10:29
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


FenixTES, ты хочешь, чтобы некий твой виджет принимал комбинацию клавиш?
Если да, то не забывай назначить действие (QAction) этому виджету с помощью, например:
    QAction * togleFullScreen = new QAction(this);
    togleFullScreen->setShortcut(tr("Ctrl+W"));
    addAction(togleFullScreen);
    connect(togleFullScreen, SIGNAL(triggered()), this, SLOT(togleFullScreen()));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FenixTES
  опции профиля:
сообщение 20.11.2009, 11:29
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 14.11.2009
Пользователь №: 1230

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 20.11.2009, 10:29) *
FenixTES, ты хочешь, чтобы некий твой виджет принимал комбинацию клавиш?
Если да, то не забывай назначить действие (QAction) этому виджету с помощью, например:
    QAction * togleFullScreen = new QAction(this);
    togleFullScreen->setShortcut(tr("Ctrl+W"));
    addAction(togleFullScreen);
    connect(togleFullScreen, SIGNAL(triggered()), this, SLOT(togleFullScreen()));

вроде сделал, как ты показал, но всеравно не пашет...
 QAction *qatmp = new QAction(this);
    qatmp->setShortcut(tr("Ctrl+Enter"));
    this->addAction(qatmp);
    connect(qatmp,SIGNAL(triggered()), qpbSend,SLOT(slotSendMess()));

так окошко QWidget с двумя QTextEdit'ами и кнопкой, я чтото ввожу в текстедите нажимаю Ctrl+Enter, ну а дальше должна вызваться некая функция...
может не пашет , потому что фокус у QTextEdit'а?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.11.2009, 11:32
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(FenixTES @ 20.11.2009, 14:29) *
потому что фокус у QTextEdit'а?
попробуй ему тоже установить это "действие"

П.С. и целыми сообщениями не цитируй, в этом нет нужды
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FenixTES
  опции профиля:
сообщение 20.11.2009, 11:51
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 14.11.2009
Пользователь №: 1230

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 20.11.2009, 11:32) *
Цитата(FenixTES @ 20.11.2009, 14:29) *
потому что фокус у QTextEdit'а?
попробуй ему тоже установить это "действие"

поставил на этот текстэдит, но всеравно не пашет...
ЗЫ плохо, что тут нет грусных смайлов...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.11.2009, 12:07
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


помести в свой слот slotSendMess вывод в консоль (qDebug() << "some text";) и посмотри при фокусе на разных виджетах срабатывает слот или нет.

в моём примере, Действие назначено виджету-окну, если я выделяю ячейку в виджете-таблице (т.е. фокус на ней), то комбинация клавиш всё равно действует
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FenixTES
  опции профиля:
сообщение 20.11.2009, 14:02
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 14.11.2009
Пользователь №: 1230

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 20.11.2009, 12:07) *
помести в свой слот slotSendMess вывод в консоль (qDebug() << "some text";) и посмотри при фокусе на разных виджетах срабатывает слот или нет.

в моём примере, Действие назначено виджету-окну, если я выделяю ячейку в виджете-таблице (т.е. фокус на ней), то комбинация клавиш всё равно действует

застрелица... неоткуда не пашет... не посылает сигнал и все... незнаю на что еще и гнать... а не может быть это потому что это окно идет с флагом ToolTip?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.11.2009, 14:05
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(FenixTES @ 20.11.2009, 17:02) *
а не может быть это потому что это окно идет с флагом ToolTip?
ну это легко проверить, убери этот флаг ради теста.
Вопрос: А сигнал со слотом точно соединился? (в консоли по этому поводу ругани не было?)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FenixTES
  опции профиля:
сообщение 20.11.2009, 14:11
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 14.11.2009
Пользователь №: 1230

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 20.11.2009, 14:05) *
Цитата(FenixTES @ 20.11.2009, 17:02) *
а не может быть это потому что это окно идет с флагом ToolTip?
ну это легко проверить, убери этот флаг ради теста.
Вопрос: А сигнал со слотом точно соединился? (в консоли по этому поводу ругани не было?)

у меня на этот слот еще повешена кнопка, то есть сам слот пашет, ругани не было

такс, убрал флаг, но все по прежнему
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.11.2009, 14:38
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(FenixTES @ 20.11.2009, 17:11) *
у меня на этот слот еще повешена кнопка, то есть сам слот пашет,
это отдельное соединение, и я спрашивал не о слоте, а о соединении.

сделай тестовое приложение, на основе текущего, выкинув всё лишнее.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.11.2020, 16:10