我正在尝试使用Qt Designer向我的QMenu添加图标,但我发现当我添加图标后,文本会消失。有没有办法让我的文本和图标同时显示?
我正在尝试使用Qt Designer向我的QMenu添加图标,但我发现当我添加图标后,文本会消失。有没有办法让我的文本和图标同时显示?
在Qt 4中不支持,也许在Qt5中支持,我没有检查过。 在Designer本身中你无法做太多事情。在代码中,一个选项是自定义样式,以绘制图标和文本: - QStyle :: CT_MenuBarItem的sizeFromContents - QStyle :: CE_MenuBarItem的drawControl - QStyleOptionMenuItem的drawCustomControl
ui->menuMyQMenu
的例子吗? - nwp这个默认情况下不被支持,主要是因为这不是通常在此处希望实现的操作。当然,您可以始终使用包含文本的图像,但那也是hackish的,除非您动态绘制图像,然后稍后加载它。即使那样也需要相当多的工作。
为了实现这一点,您需要稍微折腾一下Qt。这是我个人开始尝试的最接近实验。我还没有时间检查它是否实际起作用,但应该有些类似以下代码:
class CustomMenuBarWidget : public QWidget
{
public:
explicit CustomMenuBarWidget(QWidget *parent = Q_NULLPTR)
: QWidget(parent)
, menuBar(new QMenuBar())
{
}
virtual void paintEvent(QPaintEvent *event) {
QStyleOptionMenuItem styleOptionMenuItem;
QIcon icon("path/to/my/icon");
styleOptionMenuItem.icon = icon;
styleOptionMenuItem.text = "Hello World!";
QPainter painter(this);
menuBar->style()->drawControl(QStyle::CE_MenuBarItem, &styleOptionMenuItem, &painter, menuBar);
}
private:
QMenuBar *menuBar;
};
你可能也可以看一下QWidgetAction,了解如何将自定义小部件插入到工具栏和菜单栏中。我自己在任何严肃的项目中从未使用过它,但知道这个可能会有用。
QToolButton
中的选项,例如TextBesideIcon
、IconOnly
等的样式属性。 - headsvk