Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt:样式>&燃气轮机;QToolBar太小时的箭头_Qt_Qtstylesheets - Fatal编程技术网

Qt:样式>&燃气轮机;QToolBar太小时的箭头

Qt:样式>&燃气轮机;QToolBar太小时的箭头,qt,qtstylesheets,Qt,Qtstylesheets,我有一个带有QToolButtons的QToolBar。当主窗口太小时,它将显示一个“>>”按钮,以将视图扩展为多行并显示所有QToolButtons 如何设置此“>>”按钮的样式?我想更改图标和背景色 我已经尝试使用这些选择器:QToolButton::menu指示器、QToolButton::menu按钮、QToolButton::向下箭头。不起作用 如何更改“>>”按钮的颜色和宽度 您不能通过CSS,但可以使用自定义样式: 从QStyle/QCommonStyle继承一个新类 重新实现p

我有一个带有QToolButtons的QToolBar。当主窗口太小时,它将显示一个“>>”按钮,以将视图扩展为多行并显示所有QToolButtons

如何设置此“>>”按钮的样式?我想更改图标和背景色

我已经尝试使用这些选择器:QToolButton::menu指示器、QToolButton::menu按钮、QToolButton::向下箭头。不起作用

如何更改“>>”按钮的颜色和宽度


您不能通过
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编辑了这篇文章。最好将你的信息添加为注释,因为我打赌类似注释的答案很快就会被删除。