crossplatform.ru

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


  Ответ в Как запретить закрытие диалогового окна при нажатии esc?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kwisp Дата 13.3.2009, 22:37
  Rocky,
повторимся.
в классе QDialog после нажатия escape closeEvent не срабатывает вообще.
собери мой пример и посмотри в вывод в лог.

в других виджетах так сразу на ум ничего не приходит надо подумать.....
Rocky Дата 13.3.2009, 22:27
  kwisp

ок, а как узнать, closeEvent сработал после нажатия кнопки esc или после нажатия кнопки "Отмена"?
kwisp Дата 13.3.2009, 20:31
 
Цитата(kuler @ 13.3.2009, 13:00) *
во, переопределил reject в паре с клозе и заработало

будет работать и без
Цитата(kuler @ 13.3.2009, 13:00) *
клозе
kuler Дата 13.3.2009, 13:00
  у меня тоже клозе евент по ескапу не срабатывает, причем что самое странное окно секунд 10 по ескапе не закрывается, а потом если нажать то закрывается

во, переопределил reject в паре с клозе и заработало
kwisp Дата 13.3.2009, 10:17
 
Цитата(BRE @ 13.3.2009, 10:15) *
Цитата из assistant в разделе QDialog:

говорю же где то читал. искал сейчас это место чтобы процитировать... не мог найти
:)
пришлось пример написать.
BRE Дата 13.3.2009, 10:15
 
Цитата(kwisp @ 13.3.2009, 10:02) *
походу просто напросто по escape closeEvent не вызывается.

Цитата из assistant в разделе QDialog:
Цитата
Escape Key
If the user presses the Esc key in a dialog, QDialog::reject() will be called. This will cause the window to close: The close event cannot be ignored.
kwisp Дата 13.3.2009, 10:02
  Litkevich Yuriy,
не получиться предложенным способом. я где то читал что по escape все равно будет закрываться.
вот код можно проверить
#include <QApplication>
#include <QDialog>
#include <QtDebug>
#include <QCloseEvent>

class Dialog:public QDialog {
    public:
        Dialog(QWidget* parent=0):QDialog(parent)
        {
                qDebug()<<__PRETTY_FUNCTION__;
        }
    protected:
    void closeEvent(QCloseEvent* ev)
    {
        qDebug()<<__PRETTY_FUNCTION__;
        ev->ignore();
    }

};

int main(int a,char** b)
{
    QApplication app(a,b);
    Dialog dl;
    dl.show();
    return app.exec();
}

походу просто напросто по escape closeEvent не вызывается.
Litkevich Yuriy Дата 12.3.2009, 20:21
  а можно делать как у тролей в пример MDI:
void MainWindow::closeEvent(QCloseEvent *p_event)
{
    p_event->ignore();
}
Kagami Дата 12.3.2009, 19:41
  При нажатии кнопки Esc вызывается слот QDialog::reject(). Вот его и надо переопределить в своем диалоге, например, чтобы он ничего не делал.
Rocky Дата 12.3.2009, 19:22
  сабж

Спасибо.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 3:26