История изменений
Исправление 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