Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Thanatos от Август 28, 2011, 19:17



Название: События и свойства объектов - как изменить порядок следования?
Отправлено: 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() значение.) А хотелось бы наоборот!
Можно ли как-нибудь изменить приоритет вызова события или что-то подобное сделать, чтобы избавиться от костылей?


Название: Re: События и свойства объектов - как изменить порядок следования?
Отправлено: kambala от Август 28, 2011, 21:03
а зачем фильтр событий использовать если есть сигналы clicked(bool) и toogled(bool)?


Название: Re: События и свойства объектов - как изменить порядок следования?
Отправлено: Thanatos от Август 28, 2011, 23:03
toggled(bool) мне не подходил, т.к. вызывался при setChecked()
а вот clicked(bool) я проглядел!
спасибо!