Qt:样式>&燃气轮机;QToolBar太小时的箭头
我有一个带有QToolButtons的QToolBar。当主窗口太小时,它将显示一个“>>”按钮,以将视图扩展为多行并显示所有QToolButtons 如何设置此“>>”按钮的样式?我想更改图标和背景色 我已经尝试使用这些选择器:QToolButton::menu指示器、QToolButton::menu按钮、QToolButton::向下箭头。不起作用 如何更改“>>”按钮的颜色和宽度Qt:样式>&燃气轮机;QToolBar太小时的箭头,qt,qtstylesheets,Qt,Qtstylesheets,我有一个带有QToolButtons的QToolBar。当主窗口太小时,它将显示一个“>>”按钮,以将视图扩展为多行并显示所有QToolButtons 如何设置此“>>”按钮的样式?我想更改图标和背景色 我已经尝试使用这些选择器:QToolButton::menu指示器、QToolButton::menu按钮、QToolButton::向下箭头。不起作用 如何更改“>>”按钮的颜色和宽度 您不能通过CSS,但可以使用自定义样式: 从QStyle/QCommonStyle继承一个新类 重新实现p
您不能通过
CSS
,但可以使用自定义样式:
- 从
/QStyle
继承一个新类李>QCommonStyle
- 重新实现
以更改按钮的大小李>pixelMetric
:创建一个插槽Qt4
,以更改按钮的图标standardIconImplementation
:重新实现Qt5
,以更改按钮的图标标准图标
- 创建此样式并使用
将其应用于工具栏(或应用程序)setStyle
virtual int MyStyle::pixelMetric(PixelMetric pm, const QStyleOption* option, const QWidget* widget) const override
{
if (pm == QStyle::PM_ToolBarExtensionExtent)
return mySize; // width of a toolbar extension button in a horizontal toolbar and the height of the button in a vertical toolbar
return QStyle::pixelMetric(pm, option, widget);
}
Q_SLOT QIcon MyStyle::standardIconImplementation(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const
{
switch (standardIcon)
{
case QStyle::SP_ToolBarHorizontalExtensionButton :
return m_toolBarHExtendButtonIcon;
case QStyle::SP_ToolBarVerticalExtensionButton :
return m_toolBarVExtendButtonIcon;
}
return QStyle::standardIconImplementation(standardIcon, option, widget);
}
virtual int MyStyle::pixelMetric(PixelMetric pm, const QStyleOption* option, const QWidget* widget) const override
{
if (pm == QStyle::PM_ToolBarExtensionExtent)
return mySize; // width of a toolbar extension button in a horizontal toolbar and the height of the button in a vertical toolbar
return QStyle::pixelMetric(pm, option, widget);
}
Q_SLOT QIcon MyStyle::standardIconImplementation(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget
非常感谢
然而,从QStyle继承意味着要重新实现许多函数。我选择继承QCleanLookStyle(但还有许多其他不错的样式),只重新实现像素度量和标准图标实现
对于那些像我一样选择使用QCleanLookStyle的人,别忘了在pixelMetric中调用正确的父函数,否则会出现链接错误
virtual int pixelMetric(PixelMetric pm, const QStyleOption* option, const QWidget* widget) const override
{
if (pm == QStyle::PM_ToolBarExtensionExtent)
return 1234;
return QCleanlooksStyle::pixelMetric(pm, option, widget);
}
谢谢你的回答,它很有效
您不能通过
CSS
,但是可以使用自定义
样式:
- 从
/QStyle
继承一个新类李>QCommonStyle
- 重新实现
以更改按钮的大小李>pixelMetric
:创建一个插槽Qt4
,以更改按钮的图标standardIconImplementation
:重新实现Qt5
,以更改按钮的图标标准图标
- 创建此样式并使用
将其应用于工具栏(或应用程序)setStyle
virtual int MyStyle::pixelMetric(PixelMetric pm, const QStyleOption* option, const QWidget* widget) const override
{
if (pm == QStyle::PM_ToolBarExtensionExtent)
return mySize; // width of a toolbar extension button in a horizontal toolbar and the height of the button in a vertical toolbar
return QStyle::pixelMetric(pm, option, widget);
}
Q_SLOT QIcon MyStyle::standardIconImplementation(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const
{
switch (standardIcon)
{
case QStyle::SP_ToolBarHorizontalExtensionButton :
return m_toolBarHExtendButtonIcon;
case QStyle::SP_ToolBarVerticalExtensionButton :
return m_toolBarVExtendButtonIcon;
}
return QStyle::standardIconImplementation(standardIcon, option, widget);
}
virtual int MyStyle::pixelMetric(PixelMetric pm, const QStyleOption* option, const QWidget* widget) const override
{
if (pm == QStyle::PM_ToolBarExtensionExtent)
return mySize; // width of a toolbar extension button in a horizontal toolbar and the height of the button in a vertical toolbar
return QStyle::pixelMetric(pm, option, widget);
}
Q_SLOT QIcon MyStyle::standardIconImplementation(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget
=0)常数
{
开关(标准图标)
{
案例QStyle::SP_工具栏水平扩展按钮:
返回m_按钮按钮尼康
case QStyle::SP_ToolBarVerticalExtensionButton :
return m_toolBarVExtendButtonIcon;
}
return QStyle::standardIconImplementation(standardIcon, option, widget);
}
你有任何代码或JSFIDLE供我们使用,这样其他人会发现这很有用。谢谢!我用CSS编辑了这篇文章。最好将你的信息添加为注释,因为我打赌类似注释的答案很快就会被删除。