Exemple #1
0
void
ComboBox::createMenu()
{
    if (!_cascading) {
        _rootNode->isMenu->clear();
        for (U32 i = 0; i < _rootNode->children.size(); ++i) {
            _rootNode->children[i]->isLeaf->setEnabled( _enabled && !_readOnly );
            _rootNode->isMenu->addAction(_rootNode->children[i]->isLeaf);
            for (U32 j = 0; j < _separators.size(); ++j) {
                if (_separators[j] == (int)i) {
                    _rootNode->isMenu->addSeparator();
                    break;
                }
            }
        }
    } else {
        setEnabledRecursive( _enabled && !_readOnly, _rootNode.get() );
    }
    QAction* triggered = _rootNode->isMenu->exec( this->mapToGlobal( QPoint( 0, height() ) ) );
    if (triggered) {
        QVariant data = triggered->data();
        if ( data.toString() != QString::fromUtf8("New") ) {
            setCurrentIndex( data.toInt() );
        } else {
            Q_EMIT itemNewSelected();
        }
    }
    _clicked = false;
    if (focusPolicy() != Qt::NoFocus) {
        setFocus();
    }
    update();
}
void setEnabledRecursive(QLayout *layout, bool enabled)
{
    while (QLayoutItem* item = layout->takeAt(0))
    {
        if (QWidget* widget = item->widget())
            widget->setEnabled(enabled);
        if (QLayout* childLayout = item->layout())
            setEnabledRecursive(childLayout, enabled);
    }
}
Exemple #3
0
static void
setEnabledRecursive(bool enabled,
                    ComboBoxMenuNode* node)
{
    if (node->isLeaf) {
        node->isLeaf->setEnabled(enabled);
    } else {
        assert(node->isMenu);
        for (std::size_t i = 0; i < node->children.size(); ++i) {
            setEnabledRecursive( enabled, node->children[i].get() );
        }
    }
}