Example #1
0
void tst_QScrollArea::ensureMicroFocusVisible_Task_167838()
{
    QScrollArea scrollArea;
    scrollArea.resize(100, 100);
    scrollArea.show();
    QWidget *parent = new QWidget;
    parent->setLayout(new QVBoxLayout);
    QWidget *child = new WidgetWithMicroFocus;
    parent->layout()->addWidget(child);
    parent->resize(300, 300); 
    scrollArea.setWidget(parent);
    scrollArea.ensureWidgetVisible(child, 10, 10);
    QRect microFocus = child->inputMethodQuery(Qt::ImMicroFocus).toRect();
    QPoint p = child->mapTo(scrollArea.viewport(), microFocus.topLeft());
    microFocus.translate(p - microFocus.topLeft());
    QVERIFY(scrollArea.viewport()->rect().contains(microFocus));
}
Example #2
0
void RolloutBox::setExpanded(bool expanded) {
    if (m_expanded != expanded) {
        QScrollArea *sa = 0;
        QWidget *p = parentWidget();
        while (p) {
            sa = qobject_cast<QScrollArea*>(p);
            if (sa) break;
            p = p->parentWidget();
        }

        bool areUpdatesEnabled;
        if (sa) {
            areUpdatesEnabled = updatesEnabled();
            sa->setUpdatesEnabled(false);
        }
        
        m_expanded = !m_expanded;
        QList<QWidget*> L = findChildren<QWidget*>();
        for (int i = 0; i < L.size(); ++i) {
            if ((L[i] != m_toolButton) && (L[i] != m_checkBox)) L[i]->setVisible(m_expanded);
        }
        parentWidget()->updateGeometry();

        if (sa) {
            qApp->processEvents();
            if (m_expanded) sa->ensureWidgetVisible(this);
            sa->setUpdatesEnabled(true);
        }
        
        if (m_toolButton) {
            m_toolButton->setArrowType(m_expanded? Qt::DownArrow : Qt::RightArrow);
        }

        toggled(m_expanded);
    }
}