1

我有带有左图标和右指示器的 QToolButton(MenuButtonPopup 模式)。如何通过 qss 更改此距离?注意图片

工具按钮:
工具按钮

4

1 回答 1

0

假设您像这样设置 QToolButton:

QToolButton* button {new QToolButton()};
button->setText("Button");
button->setToolButtonStyle(Qt::ToolButtonTextOnly);
button->setPopupMode(QToolButton::MenuButtonPopup);
QMenu* menu = new QMenu("Test menu", button);
menu->addAction("Test action");
button->setMenu(menu);

在 MenuButtonPopup 模式下,用于打开此 QToolButton 菜单的“箭头”是一个子控件(将其视为按钮内的按钮)。您可以像这样控制它在控件中的位置:

button->setStyleSheet(
    "QToolButton { "
    "    padding-left: 5px;"
    "    padding-right: 60px;"
    "    border: 1px solid grey;"
    "}"
    ""
    "QToolButton::menu-button {"
    "    border: 2px solid red;"
    "    width: 36px;"
    "    right: 20px;"
    "    subcontrol-position: right center;"
    "    image: url(:/icons/down.png);"
    "}"
);

这假设您已经在资源文件中设置了“/icons/down.png”图像文件。

我将子控件的边框设置为红色,以便更容易看到子控件的绘制位置。

当然,您可以从文件加载样式表,而不是像示例中那样内联它。

请注意,由于您要替换小部件的默认样式,因此您需要根据需要指定其余样式。请注意,出于某种原因,如果您完全删除了 QToolButton 小部件本身或其子控件的边框,则样式将出错。

于 2022-02-07T08:49:02.770 回答