Как игнорировать событие изменения размера в Qt3?

когда я увеличиваю размер левой области дока (вручную), главное окно также увеличивает свой размер. но это не имеет предела!. он может стать шире, чем размер экрана. я хочу предотвратить это. я попытался повторно реализовать метод resizeEvent() главного окна. это то, что я пробовал.

void MyMain::resizeEvent(QResizeEvent *e)
{
     if (newMainWindowWidth > screenWidth)
     {
          leftDockWindow->setFixedExtentWidth(
                   leftDockWidth - (newWidth - screenWidth));
          leftDockWindow->adjustSize();
          adjustSize(); // flicker effect :(
     }
}

это работает. но у него есть эффект мерцания, потому что я снова настраиваю размер. Я думаю, что могу решить эту проблему, игнорируя событие. но я не могу найти способ сделать это. пожалуйста помоги !! Спасибо.


person shan    schedule 15.03.2012    source источник
comment
Почему вместо этого вы не используете политику минимального и фиксированного размера?   -  person sorush-r    schedule 15.03.2012
comment
Я не могу использовать фиксированный размер, потому что я должен разрешить изменение размера. Приложение будет работать на нескольких мониторах...   -  person shan    schedule 15.03.2012
comment
Хорошо... это можно сделать, повторно внедрив метод eventFilter() в MainWindow. Благодарность...   -  person shan    schedule 16.03.2012


Ответы (1)


Решение...

bool MyClass::eventFilter(QObject *obj, QEvent *e)
{
    if (e->type() == QEvent::Resize)
    {
        if (obj == myObj)
        {
            doSomethingWithObj(); 
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return QWidget::eventFilter(obj, e);;
    }
}
person shan    schedule 21.03.2012