1

我使用以下代码,创建 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标题“工具按钮菜单...”替换(我故意放了一个不同的标签)。但不知何故,“...”从名称中删除了。

关于这个问题的任何想法?这是一个特殊的 Qt 功能吗?

4

1 回答 1

3

QToolButton显示来自QActioniconText属性(不是text)的文本。text用于菜单条目,而iconText用于显示在工具栏中。未设置时,iconTexttext.

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

于 2018-06-22T10:16:37.133 回答