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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Переопределение функций show и hide  (Прочитано 10281 раз)
lighting
Гость
« : Июнь 03, 2010, 15:30 »

Хотел переопределить поведение диалоговых окно при hide и show, отнаследовался от QDialog
Код
C++ (Qt)
class Dialog : public QDialog
{
   Q_OBJECT
 
public:
   Dialog(QWidget *parent = 0);
   ~Dialog();
  ...
private slots:
   void show();
   void hide();
...
};

Написал новые обработчики
Код
C++ (Qt)
Dialog::Dialog(QWidget *parent)
{
// initialization
}
 
Dialog::~Dialog()
{
}
 
void Dialog::show()
{
// show new code
}
 
void Dialog::hide()
{
// hide new code
}
Проверяю в дебаггере - в мои методы программа не заходит, show  и hide используются стандартные. В чем может быть проблема?
Записан
BRE
Гость
« Ответ #1 : Июнь 03, 2010, 15:31 »

В чем может быть проблема?
В том, что они не виртуальные методы.
Записан
lighting
Гость
« Ответ #2 : Июнь 03, 2010, 15:39 »

т.е. переопределять можно только виртуальные методы и в моем случае этого сделать нельзя в принципе, только объобными путями отлавливая все события при которых может быть вызван show и hide и подставлять туда свои обработчики?
Записан
BRE
Гость
« Ответ #3 : Июнь 03, 2010, 15:44 »

т.е. переопределять можно только виртуальные методы и в моем случае этого сделать нельзя в принципе, только объобными путями отлавливая все события при которых может быть вызван show и hide и подставлять туда свои обработчики?
Посмотри на метод:
virtual void   setVisible ( bool visible )
Записан
insamo
Гость
« Ответ #4 : Июнь 03, 2010, 15:48 »

В чем может быть проблема?
В том, что они не виртуальные методы.

Ты ошибся они виртуальные
смотри сюда http://doc.trolltech.com/3.0/qdialog.html#showExtension

void QDialog::show () [virtual]
Записан
crossly
Гость
« Ответ #5 : Июнь 03, 2010, 15:50 »

В чем может быть проблема?
В том, что они не виртуальные методы.
а кто сказал что не виртуальные переопределять нельзя... ??
Записан
MoPDoBoPoT
Гость
« Ответ #6 : Июнь 03, 2010, 15:51 »

private slots:
...

А вообще, если хочешь задать свое поведение при скрытии/отображении, а не только, когда явно вызываются эти слоты, то надо пререопределять  hideEvent()/showEvent().
Записан
MoPDoBoPoT
Гость
« Ответ #7 : Июнь 03, 2010, 15:52 »

Ты ошибся они виртуальные
смотри сюда http://doc.trolltech.com/3.0/qdialog.html#showExtension
Версия Qt 3...
Записан
insamo
Гость
« Ответ #8 : Июнь 03, 2010, 15:53 »

В чем может быть проблема?
В том, что они не виртуальные методы.
а кто сказал что не виртуальные переопределять нельзя... ??

Тогда где ты здесь проблему видишь, из контекста постов, оно так и выходит
Записан
insamo
Гость
« Ответ #9 : Июнь 03, 2010, 15:58 »

Ты ошибся они виртуальные
смотри сюда http://doc.trolltech.com/3.0/qdialog.html#showExtension
Версия Qt 3...

сори Рот на замке
Записан
lighting
Гость
« Ответ #10 : Июнь 03, 2010, 16:06 »

BRE, MoPDoBoPoT - в моем случае эти способы не подходят. Я хотел реализовать плавное проявление окна для show и растворение для hide. setVisible не поможет при закрытии окна напр. по Esc, а эвенты это хорошо, но при Hide напр. мое плавное затухание не успеет себя проявить - окно исчезнет мгновенно.
Цитировать
а кто сказал что не виртуальные переопределять нельзя... ??
это я предположил из ответа BRE
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #11 : Июнь 03, 2010, 16:27 »

>>а кто сказал что не виртуальные переопределять нельзя... ??
дык, их ни когда нельзя было переопределять. Только перегружать, а это не одно и тоже.
Записан

Юра.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #12 : Июнь 03, 2010, 16:31 »

BRE, MoPDoBoPoT - в моем случае эти способы не подходят. Я хотел реализовать плавное проявление окна для show и растворение для hide. setVisible не поможет при закрытии окна напр. по Esc, а эвенты это хорошо, но при Hide напр. мое плавное затухание не успеет себя проявить - окно исчезнет мгновенно.

А как? Я тоже делал несколько типов затухания, большая проблема в том, что они жоско тормозят. Спасает только использование композитного менеджера и специального затухания, заточенного под него.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #13 : Июнь 03, 2010, 16:37 »

>>а кто сказал что не виртуальные переопределять нельзя... ??
дык, их ни когда нельзя было переопределять. Только перегружать, а это не одно и тоже.

если быть точным, то

http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/575631e6ba581ee6/d4e4c36db398d560?hl=ru&q=overloading+overriding+hiding
Записан
crossly
Гость
« Ответ #14 : Июнь 03, 2010, 16:43 »

>>а кто сказал что не виртуальные переопределять нельзя... ??
дык, их ни когда нельзя было переопределять. Только перегружать, а это не одно и тоже.
простите за терминологию....
по вопросу..... по моему товарисч MoPDoBoPoT указал на проблему в коде
Код:
private slots:
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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