сабж
Спасибо.
При нажатии кнопки Esc вызывается слот QDialog::reject(). Вот его и надо переопределить в своем диалоге, например, чтобы он ничего не делал.
а можно делать как у тролей в пример MDI:
void MainWindow::closeEvent(QCloseEvent *p_event)
{
p_event->ignore();
}
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();
}
у меня тоже клозе евент по ескапу не срабатывает, причем что самое странное окно секунд 10 по ескапе не закрывается, а потом если нажать то закрывается
во, переопределил reject в паре с клозе и заработало
kwisp
ок, а как узнать, closeEvent сработал после нажатия кнопки esc или после нажатия кнопки "Отмена"?
Rocky,
повторимся.
в классе QDialog после нажатия escape closeEvent не срабатывает вообще.
собери мой пример и посмотри в вывод в лог.
в других виджетах так сразу на ум ничего не приходит надо подумать.....
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)