Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Закрытие приложения однократным нажатием 
V
    Опции темы
kuvshinka
Дата 1.3.2010, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



Делаю закрытие приложения по нажатию Esc:
Код

void TD_Main::keyPressEvent (QKeyEvent * e)
 {
    switch(e->key())
        {
        case Qt::Key_Escape:
        this->close();              
            break;
        }
}

Но если на форме, например, была нажата кнопка, то в ней находится фокус ввода и тогда выход из приложения осуществляется двойным нажатием эскейпа…а надо сделать так, чтобы вне зависимости от “состояния” формы, ее закрытие осуществлялось однократным нажатием esc…как это сделать программно?  
PM MAIL   Вверх
SABROG
Дата 1.3.2010, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



//main.cpp
Код

MainWidget widget;
QShortcut shtcut(Qt::Key_Escape, &widget, SLOT(close()), 0, Qt::ApplicationShortcut);



--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
kuvshinka
Дата 1.3.2010, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



можно пояснения: где именно писать этот код - прямо в main-функции? что за MainWidget (класс по умолчанию MainWindow???) и QShortcut??? у меня пишет, что они "...was not declared in this scope"
PM MAIL   Вверх
SABROG
  Дата 1.3.2010, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Код

#include <QtGui/QApplication>
#include <QtGui/QShortcut>
#include "TD_Main.h"

int main(int argc, char* argv[])
{
    QApplication a(argc, argv);
    TD_Main mainWindow;
    QShortcut shtcut(Qt::Key_Escape, &mainWindow, SLOT(close()), 0, Qt::ApplicationShortcut);
    mainWindow.show();
    return a.exec();
}
//#include "main.moc" // возможно это придется раскомментировать, если собираться не будет


Такого злостного уклонения от чтения литературы по Qt и C++ одновременно я давно не видел smile 

Это сообщение отредактировал(а) SABROG - 1.3.2010, 23:23


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
kuvshinka
Дата 1.3.2010, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



SABROG: пасиба за ответ...но я наоборот - упорно читаю литературу по QT - "М. Шлее - Qt в подлиннике"....но например этого там нет...да и на все случаи жизни ответов в книгах не найти - мало ли какая задача... 
PM MAIL   Вверх
SABROG
Дата 2.3.2010, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(kuvshinka @ 1.3.2010,  23:36)
SABROG: пасиба за ответ...но я наоборот - упорно читаю литературу по QT - "М. Шлее - Qt в подлиннике"....но например этого там нет...да и на все случаи жизни ответов в книгах не найти - мало ли какая задача...

Assistant в первую очередь, а в книжки за разъяснениями и примерами.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1089 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.