i solved the issue. I found out that only when I add two press statements with a delay after the second the method works correctly.
I fixed the bug like this:
void Cell::handleMousePressEvent(QMouseEvent *event)
{
    if(!(event->buttons().testFlag(Qt::LeftButton) ||
         event->buttons().testFlag(Qt::RightButton))) {
        return;
    }
    if(event->buttons().testFlag(Qt::LeftButton)) {
        mSingleMouseTimerLeft.start();
    }
    else if (event->buttons().testFlag(Qt::RightButton)){
        mSingleMouseTimerRight.start();
    }
    const auto elapsedTime = mElapsedTimer.restart();
    if(elapsedTime < QApplication::doubleClickInterval() && 
            event->buttons().testFlag(Qt::LeftButton) &&
            event->buttons().testFlag(Qt::RightButton)) {
        if(!isPressed()) {
            pressIfReleased();
            mNeighboursPressed = true;
            emit pressNeighbours();
        }
        for(QTimer* timer : { &mSingleMouseTimerRight,
            &mSingleMouseTimerLeft }) {
            timer->stop();
        }
        return;
    }
}
Before we always slided into elapsedTime < QApplication::doubleClickInterval and then the first time:
for(QTimer* timer : { &mSingleMouseTimerRight,
          &mSingleMouseTimerLeft }) {
          timer->stop();
      }
was triggered erasing the passed time. only with two nice delays i could get it to work. Now after fix it works as expected:
void TestCell::flagged()
{
    constexpr auto delayClickRightAndLeftTogether = 50;
    
    QFETCH(Cell::State, cellState);
    QFETCH(int, result);
    CellInputHandler filter;
    Cell obj{ cellState };
    obj.installEventFilter(&filter);
    QSignalSpy spy(&obj, &Cell::flagged);
    QTest::mousePress(&obj, Qt::RightButton, Qt::NoModifier,
                      obj.rect().center());
    spy.wait(delayClickRightAndLeftTogether);
    QCOMPARE(spy.count(), result);
}
So i already found a bug. Thats great.
Note: I used spy.wait but i think its like QTest::qWaitFor Without condition right?