crossplatform.ru

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

4 страниц V  « < 2 3 4  
Ответить в данную темуНачать новую тему
> Всплывающие окна
refixs
  опции профиля:
сообщение 21.3.2010, 3:20
Сообщение #31


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 17.11.2009
Пользователь №: 1238

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




Репутация:   0  


Там два сообщения, отдельно добавить не получилось. В первом я сказал, что eventFilter не срабатывает, отладчик не останавливается в начале функции. Во втором сообщении я рассказал о том как решил решить свою проблему.

Вот один из вариантов использования eventFilter:
bool NotifyWindow::eventFilter(QObject *obj, QEvent *event) {
    if(event->type() == QEvent::MouseButtonPress) {
        return true;
    } else {
        QWidget::eventFilter(obj, event);
    }
}


но какая разница какой код если отладчик не останавливается в начале функции?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.3.2010, 3:38
Сообщение #32


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

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

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




Репутация:   94  


NotifyWindow - это всплывающее окно?


Цитата(refixs @ 21.3.2010, 6:20) *
но какая разница какой код если отладчик не останавливается в начале функции?
не знаю ничего про отладчик, у меня один отладчик:
qDebug() << "Название функции"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
refixs
  опции профиля:
сообщение 21.3.2010, 12:02
Сообщение #33


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 17.11.2009
Пользователь №: 1238

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 21.3.2010, 3:38) *
NotifyWindow - это всплывающее окно?

Да, а MainWindow это основное. Фильтр я пробовал и туда и туда ставить.

Цитата(Litkevich Yuriy @ 21.3.2010, 3:38) *
не знаю ничего про отладчик, у меня один отладчик:
qDebug() << "Название функции"

bool NotifyWindow::eventFilter(QObject *obj, QEvent *event) {
    qDebug() << "NotifyWindow::eventFilter";
    return QWidget::eventFilter(obj, event);
}
bool MainWindow::eventFilter(QObject *obj, QEvent *event) {
    qDebug() << "MainWindow::eventFilter";
    return QMainWindow::eventFilter(obj, event);
}


Вывод приложения:
Lowest section in C:\WINDOWS\system32\xpsp2res.dll is .rsrc at 00011000

Добавил еще в конструкторы на всякий случай (чтоб проверить или qDebug() вообще срабатывает), получил такой вот вывод:
Цитата
MainWindow::MainWindow
Lowest section in C:\WINDOWS\system32\xpsp2res.dll is .rsrc at 00011000
NotifyWindow::NotifyWindow
NotifyWindow::NotifyWindow
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.3.2010, 12:26
Сообщение #34


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

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

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




Репутация:   94  


Цитата(refixs @ 21.3.2010, 15:02) *
Да, а MainWindow это основное. Фильтр я пробовал и туда и туда ставить.
отсюда вывод - ты не понимаешь, что такое "фильтр событий", К стати говоря я так и не увидел кода, который устанавливает фильтр событий.
Ты должен в MainWindow установить фильтр событий на интересующий тебя экземпляр класса NotifyWindow
Читай асистент bool QObject::eventFilter ( QObject * watched, QEvent * event ) [virtual]
там очень простой и понятный пример
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
refixs
  опции профиля:
сообщение 22.3.2010, 3:04
Сообщение #35


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 17.11.2009
Пользователь №: 1238

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




Репутация:   0  


Да, я понял свою ошибку. Я не сделал привязку фильтра через installEventFilter. Отпишусь как вернусь к задаче. Пока меня устраивает решение описанное выше.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 23.11.2024, 18:20