LINUX.ORG.RU

История изменений

Исправление Xintrea, (текущая версия) :

В общем, я сделал так: создал дополнительный класс EditorFontToolFocus, и включаю его как public-включение toolFocus в EditorFontFamilyComboBox (и еще в EditorFontSizeComboBox, но с ним буду позже разбираться).

Объект QAction, который должен активировать виджет, я вставляю в тулбар через функцию insertActionAsButton(), которая умеет добавлять «скрытые» действия на тулбар в виде невидимой кнопки:

// Если добавляемый инструмент - это виджет
if(toolAsWidget)
{
    toolAsWidget->setVisible(true);
    line.addWidget(toolAsWidget); // Инструмент добавляется на панель инструментов как виджет

    // Для специальных классов добавляются действия активации виджета
    // как невидимые кнопки
    if( strcmp(toolAsWidget->metaObject()->className(), "EditorFontFamilyComboBox")==0)
    {
        insertActionAsButton(&line, static_cast<EditorFontFamilyComboBox*>(toolAsWidget)->toolFocus.getSelectAction(), false);
    }
    if( strcmp(toolAsWidget->metaObject()->className(), "EditorFontSizeComboBox")==0 )
    {
        insertActionAsButton(&line, static_cast<EditorFontSizeComboBox*>(toolAsWidget)->toolFocus.getSelectAction(), false);
    }
}

Но все равно, и в таком виде не работает вызов слота EditorFontToolFocus::onChangeSelectAction().

Кстати, чтобы сделать кнопки активации видимыми, надо третий параметр insertActionAsButton() поставить в true. И они становятся видны. Но ни горячая клавиша, ни клик на них не приводит к вызову слота EditorFontToolFocus::onChangeSelectAction(), нужное сообщение в консоли не появляется.

Изменения сделаны в коммите b57273ad4b

UPD: Пробовал вмето сигнала changed отлавливать toggled, толку тоже никакого.

Исходная версия Xintrea, :

В общем, я сделал так: создал дополнительный класс EditorFontToolFocus, и включаю его как public-включение toolFocus в EditorFontFamilyComboBox (и еще в EditorFontSizeComboBox, но с ним буду позже разбираться).

Объект QAction, который должен активировать виджет, я вставляю в тулбар через функцию insertActionAsButton(), которая умеет добавлять «скрытые» действия на тулбар в виде невидимой кнопки:

// Если добавляемый инструмент - это виджет
if(toolAsWidget)
{
    toolAsWidget->setVisible(true);
    line.addWidget(toolAsWidget); // Инструмент добавляется на панель инструментов как виджет

    // Для специальных классов добавляются действия активации виджета
    // как невидимые кнопки
    if( strcmp(toolAsWidget->metaObject()->className(), "EditorFontFamilyComboBox")==0)
    {
        insertActionAsButton(&line, static_cast<EditorFontFamilyComboBox*>(toolAsWidget)->toolFocus.getSelectAction(), false);
    }
    if( strcmp(toolAsWidget->metaObject()->className(), "EditorFontSizeComboBox")==0 )
    {
        insertActionAsButton(&line, static_cast<EditorFontSizeComboBox*>(toolAsWidget)->toolFocus.getSelectAction(), false);
    }
}

Но все равно, и в таком виде не работает вызов слота EditorFontToolFocus::onChangeSelectAction().

Кстати, чтобы сделать кнопки активации видимыми, надо третий параметр insertActionAsButton() поставить в true. И они становятся видны. Но ни горячая клавиша, ни клик на них не приводит к вызову слота EditorFontToolFocus::onChangeSelectAction(), нужное сообщение в консоли не появляется.

Изменения сделаны в коммите b57273ad4b