当前位置:   article > 正文

Qt中QToolButton分析

qtoolbutton

QToolButton 类为命令或选项提供了一个快速访问按钮,通常在 QToolBar 中使用。
工具按钮是一种特殊按钮,可提供对特定命令或选项的快速访问。 与普通命令按钮相反,工具按钮通常不显示文本标签,而是显示图标。

 

按钮的外观和尺寸可通过 setToolButtonStyle() 和 setIconSize() 进行调整。工具按钮可以在弹出菜单中提供其他选项。 可以使用 setMenu() 设置弹出菜单。 使用 setPopupMode() 配置可用于带有菜单集的工具按钮的不同模式。 默认模式是 DelayedPopupMode,有时与 Web 浏览器中的“后退”按钮一起使用。 按住按钮一段时间后,会弹出一个菜单,显示要跳转到的可能页面列表。 超时取决于样式,请参阅 QStyle::SH_ToolButton_PopupDelay。

  • Qt::ToolButtonStyle  toolButtonStyle() const
  • 此属性保存工具按钮是仅显示图标、仅显示文本还是在图标旁边/下方显示文本。
    默认值为 Qt::ToolButtonIconOnly。
    要使工具按钮的样式遵循系统设置,请将此属性设置为 Qt::ToolButtonFollowStyle。 在 Unix 上,将使用桌面环境中的用户设置。 在其他平台上,Qt::ToolButtonFollowStyle 仅表示图标。
  •  void setIconSize(const QSize &size)
  • 此属性保存用于此按钮的图标大小。
    默认大小由 GUI 样式定义。 这是图标的最大尺寸。 较小的图标不会放大。
  • void setArrowType(Qt::ArrowType type)
  • 此属性保存按钮是否显示箭头而不是普通图标。这将显示一个箭头作为 QToolButton 的图标。默认情况下,此属性设置为 Qt::NoArrow。

 运行效果图:

  1. QVBoxLayout* vLayout = new QVBoxLayout();
  2. QHBoxLayout* hLayout = new QHBoxLayout();
  3. m_upButton = new QToolButton();
  4. m_doButton = new QToolButton();
  5. m_lfButton = new QToolButton();
  6. m_rgButton = new QToolButton();
  7. //By default, this property is set to Qt::NoArrow.
  8. m_upButton->setArrowType(Qt::UpArrow);
  9. //The default is Qt::ToolButtonIconOnly.
  10. m_upButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
  11. m_upButton->setIconSize(QSize(48, 48));
  12. m_upButton->setText(QString::fromLocal8Bit("塔塔"));
  13. m_upButton->setStyleSheet("QToolButton{border: none; background: rgb(68, 69, 73); color: rgb(0, 160, 230);}");
  14. m_doButton->setArrowType(Qt::DownArrow);
  15. m_doButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
  16. m_doButton->setIconSize(QSize(48, 48));
  17. m_doButton->setText(QString::fromLocal8Bit("塔塔"));
  18. m_doButton->setStyleSheet("QToolButton{border: none; background: rgb(68, 69, 73); color: rgb(0, 160, 230);}");
  19. m_lfButton->setArrowType(Qt::LeftArrow);
  20. m_lfButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
  21. m_lfButton->setText(QString::fromLocal8Bit("塔塔"));
  22. m_lfButton->setIconSize(QSize(48, 48));
  23. m_lfButton->setStyleSheet("QToolButton{border: none; background: rgb(68, 69, 73); color: rgb(0, 160, 230);}");
  24. m_rgButton->setArrowType(Qt::RightArrow);
  25. m_rgButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
  26. m_rgButton->setIconSize(QSize(48, 48));
  27. m_rgButton->setText(QString::fromLocal8Bit("塔塔"));
  28. m_rgButton->setStyleSheet("QToolButton{border: none; background: rgb(68, 69, 73); color: rgb(0, 160, 230);}");
  29. hLayout->addWidget(m_upButton);
  30. hLayout->addWidget(m_doButton);
  31. hLayout->addWidget(m_lfButton);
  32. hLayout->addWidget(m_rgButton);
  •  void setDefaultAction(QAction *action)
  • 将默认操作设置为 action。
    如果工具按钮具有默认操作,则该操作定义按钮的属性,例如文本、图标、工具提示等。

 运行效果图:

  1. m_ColorButton1 = new QToolButton();
  2. //QAction* action = m_ColorButton->defaultAction();//默认返回值为NULL
  3. QAction* action = new QAction(QString::fromLocal8Bit("塔塔"));
  4. action->setIcon(QIcon(":/Res/Icon/ship.png"));
  5. action->setToolTip(QString::fromLocal8Bit("加油"));
  6. m_ColorButton1->setIconSize(QSize(64, 64));
  7. m_ColorButton1->setDefaultAction(action);
  8. m_ColorButton1->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
  • void setMenu(QMenu *menu)

运行效果图:

 

  1. m_ColorButton2 = new QToolButton();
  2. QAction* action2 = new QAction(QString::fromLocal8Bit("塔塔2"));
  3. action2->setIcon(QIcon(":/Res/Icon/Picture.ico"));
  4. action2->setToolTip(QString::fromLocal8Bit("加油2"));
  5. QMenu* menu = new QMenu();
  6. menu->addAction(QIcon(":/Res/Icon/Home.ico"), QString::fromLocal8Bit("主页"));
  7. menu->addAction(QIcon(":/Res/Icon/Wifi.ico"), QString::fromLocal8Bit("Wifi"));
  8. menu->addAction(QIcon(":/Res/Icon/Update.ico"), QString::fromLocal8Bit("更新"));
  9. menu->addAction(QIcon(":/Res/Icon/Folder.ico"), QString::fromLocal8Bit("文件夹"));
  10. m_ColorButton2->setPopupMode(QToolButton::MenuButtonPopup);
  11. m_ColorButton2->setIconSize(QSize(64, 64));
  12. m_ColorButton2->setDefaultAction(action2);
  13. m_ColorButton2->setMenu(menu);
  14. m_ColorButton2->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

 源码:

  1. QVBoxLayout* vLayout = new QVBoxLayout();
  2. QHBoxLayout* hLayout = new QHBoxLayout();
  3. m_upButton = new QToolButton();
  4. m_doButton = new QToolButton();
  5. m_lfButton = new QToolButton();
  6. m_rgButton = new QToolButton();
  7. //By default, this property is set to Qt::NoArrow.
  8. m_upButton->setArrowType(Qt::UpArrow);
  9. //The default is Qt::ToolButtonIconOnly.
  10. m_upButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
  11. m_upButton->setIconSize(QSize(48, 48));
  12. m_upButton->setText(QString::fromLocal8Bit("塔塔"));
  13. m_upButton->setStyleSheet("QToolButton{border: none; background: rgb(68, 69, 73); color: rgb(0, 160, 230);}");
  14. m_doButton->setArrowType(Qt::DownArrow);
  15. m_doButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
  16. m_doButton->setIconSize(QSize(48, 48));
  17. m_doButton->setText(QString::fromLocal8Bit("塔塔"));
  18. m_doButton->setStyleSheet("QToolButton{border: none; background: rgb(68, 69, 73); color: rgb(0, 160, 230);}");
  19. m_lfButton->setArrowType(Qt::LeftArrow);
  20. m_lfButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
  21. m_lfButton->setText(QString::fromLocal8Bit("塔塔"));
  22. m_lfButton->setIconSize(QSize(48, 48));
  23. m_lfButton->setStyleSheet("QToolButton{border: none; background: rgb(68, 69, 73); color: rgb(0, 160, 230);}");
  24. m_rgButton->setArrowType(Qt::RightArrow);
  25. m_rgButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
  26. m_rgButton->setIconSize(QSize(48, 48));
  27. m_rgButton->setText(QString::fromLocal8Bit("塔塔"));
  28. m_rgButton->setStyleSheet("QToolButton{border: none; background: rgb(68, 69, 73); color: rgb(0, 160, 230);}");
  29. hLayout->addWidget(m_upButton);
  30. hLayout->addWidget(m_doButton);
  31. hLayout->addWidget(m_lfButton);
  32. hLayout->addWidget(m_rgButton);
  33. m_ColorButton1 = new QToolButton();
  34. //QAction* action = m_ColorButton->defaultAction();//默认返回值为NULL
  35. QAction* action = new QAction(QString::fromLocal8Bit("塔塔"));
  36. action->setIcon(QIcon(":/Res/Icon/ship.png"));
  37. action->setToolTip(QString::fromLocal8Bit("加油"));
  38. m_ColorButton1->setIconSize(QSize(64, 64));
  39. m_ColorButton1->setDefaultAction(action);
  40. m_ColorButton1->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
  41. m_ColorButton2 = new QToolButton();
  42. QAction* action2 = new QAction(QString::fromLocal8Bit("塔塔2"));
  43. action2->setIcon(QIcon(":/Res/Icon/Picture.ico"));
  44. action2->setToolTip(QString::fromLocal8Bit("加油2"));
  45. QMenu* menu = new QMenu();
  46. menu->addAction(QIcon(":/Res/Icon/Home.ico"), QString::fromLocal8Bit("主页"));
  47. menu->addAction(QIcon(":/Res/Icon/Wifi.ico"), QString::fromLocal8Bit("Wifi"));
  48. menu->addAction(QIcon(":/Res/Icon/Update.ico"), QString::fromLocal8Bit("更新"));
  49. menu->addAction(QIcon(":/Res/Icon/Folder.ico"), QString::fromLocal8Bit("文件夹"));
  50. m_ColorButton2->setPopupMode(QToolButton::MenuButtonPopup);
  51. m_ColorButton2->setIconSize(QSize(64, 64));
  52. m_ColorButton2->setDefaultAction(action2);
  53. m_ColorButton2->setMenu(menu);
  54. m_ColorButton2->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
  55. QHBoxLayout* hLayout2 = new QHBoxLayout();
  56. hLayout2->addWidget(m_ColorButton1);
  57. hLayout2->addWidget(m_ColorButton2);
  58. vLayout->addLayout(hLayout);
  59. vLayout->addLayout(hLayout2);
  60. setLayout(vLayout);

工程项目链接:QToolButton.rar-QT文档类资源-CSDN下载

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/961293
推荐阅读
相关标签
  

闽ICP备14008679号