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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: События и свойства объектов - как изменить порядок следования?  (Прочитано 2831 раз)
Thanatos
Гость
« : Август 28, 2011, 19:17 »

Есть такой фильтр событий:

Код
C++ (Qt)
ChatWindow::ChatWindow(QWidget *parent) :
    QWidget(parent)
{
    QPushButton * connectButton = new QPushButton;
    connectButton->setCheckable(true);
 
    connectButton->installEventFilter(this);
}
 
bool ChatWindow:: eventFilter(QObject * obj, QEvent * event)
{
    if(event->type() == QEvent::MouseButtonRelease && obj == connectButton)
         startConnect(!connectButton->isChecked());
 
    return QWidget::eventFilter(obj , event);
}
 
void ChatWindow:: startConnect(bool checked)
{
//-------------------
}

Проблема в том, что событие вызывается раньше, чем свойство checked у connectButton меняет свое значение. (В итоге в мою функцию startConnect(bool checked) приходиться передавать инвертированое от вызова connectButton->isChecked() значение.) А хотелось бы наоборот!
Можно ли как-нибудь изменить приоритет вызова события или что-то подобное сделать, чтобы избавиться от костылей?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Август 28, 2011, 21:03 »

а зачем фильтр событий использовать если есть сигналы clicked(bool) и toogled(bool)?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Thanatos
Гость
« Ответ #2 : Август 28, 2011, 23:03 »

toggled(bool) мне не подходил, т.к. вызывался при setChecked()
а вот clicked(bool) я проглядел!
спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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