Я создал QToolButton, и ярлык будет содержать "...", но похоже, что Qt удаляет их, это так?

Я использую следующий код, первая часть, создающая QToolButton, принадлежит от Designer/moc, остальное я добавил.

// Moc part
QToolButton * f_tool_button = new QToolButton(bottom_grid);
f_tool_button->setObjectName(QStringLiteral("f_tool_button"));
f_tool_button->setText(QApplication::translate("MainWindow",
                                               "Tool Button...", 0));

// What I added
f_action = new QAction(this);
f_action->setObjectName(QStringLiteral("f_action"));
f_action->setText(QApplication::translate("MainWindow",
                                          "&Click...", 0));

f_menu.reset(new QMenu("Tool Button Menu ...", this));
f_menu->addAction(f_action);

f_tool_button->setDefaultAction(f_menu->menuAction());

Если я не позвоню setDefaultAction()заголовок отображается как и ожидалось.

Когда я добавляю действие по умолчанию, метка, кажется, заменяется f_menu title, "Tool Button Menu..." (я специально поставил несколько другой ярлык). Но каким-то образом "..." удаляется из названия.

Есть идеи об этой проблеме? Это особая функция Qt?

1 ответ

Решение

QToolButton отображает текст из QAction"s iconText собственность (не text). text предназначен для использования в пунктах меню, тогда как iconText предназначен для отображения на панелях инструментов. Когда не установлено, iconText это раздетая версия text,

Для переопределения поведения по умолчанию text чтобы генерировать iconText Вы можете установить желаемый iconText для тебя QAction с помощью QAction::setIconText() (т.е. f_action->setIconText("Click..."); сразу после вашего f_action->setText вызов).

Другие вопросы по тегам