我创建了一个 QToolButton 并且标签将包含“...”,但看起来 Qt 删除了它们,对吗?

I created a QToolButton and the label would include "..." but it looks like Qt removes them, is that right?

我使用以下代码,第一部分,创建 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 标题替换,"Tool Button Menu ..."(我在上面放了一个稍微不同的标签目的)。但是不知何故,“...”从名称中删除了。

知道这个问题吗?这是 Qt 的特殊功能吗?

QToolButton 显示来自 QActioniconText property (not text) 的文本。 text 用于菜单项,而 iconText 用于显示在工具栏中。未设置时,iconTexttext.

的精简版本

要覆盖默认的 text 生成 iconText 的行为,您可以使用 QAction::setIconText() 为您的 QAction 设置所需的 iconText(即f_action->setIconText("Click..."); 在您的 f_action->setText 电话之后。