ZBLOG

QToolButton的宽度比下拉菜单的action宽度多很多,如何统一尺寸

要统一 QToolButton 的宽度和下拉菜单中动作(action)的宽度,可以通过以下几个步骤实现:

  1. 获取 QAction 的文本宽度:首先,您需要获取下拉菜单中动作的最大宽度。可以使用 QFontMetrics 来计算文本的宽度。

  2. 设置 QToolButton 的固定宽度:然后,将 QToolButton 的固定宽度设置为您获得的最大宽度。

下面是一个简单的示例代码,演示了如何实现这一点:

  1. #include <QApplication>
  2. #include <QToolButton>
  3. #include <QMenu>
  4. #include <QAction>
  5. #include <QFontMetrics>
  6. int main(int argc, char *argv[]) {
  7. QApplication app(argc, argv);
  8. // 创建 QToolButton
  9. QToolButton *toolButton = new QToolButton();
  10. // 创建下拉菜单
  11. QMenu *menu = new QMenu();
  12. // 添加一些动作到菜单
  13. QAction *action1 = new QAction("Short Action");
  14. QAction *action2 = new QAction("A Much Longer Action");
  15. menu->addAction(action1);
  16. menu->addAction(action2);
  17. // 计算最大的动作宽度
  18. int maxWidth = 0;
  19. for (const QAction* action : menu->actions()) {
  20. QFontMetrics metrics(action->font());
  21. int actionWidth = metrics.horizontalAdvance(action->text()) + 20; // 适当增加一些边距
  22. if (actionWidth > maxWidth) {
  23. maxWidth = actionWidth;
  24. }
  25. }
  26. // 设置工具按钮的弹出菜单
  27. toolButton->setMenu(menu);
  28. // 设置工具按钮的固定宽度
  29. toolButton->setFixedWidth(maxWidth);
  30. toolButton->setText("Options"); // 设置工具按钮的文本
  31. toolButton->show();
  32. return app.exec();
  33. }

说明:

  • 使用 QFontMetrics::horizontalAdvance() 方法来获取每个动作文本的宽度。
  • 在循环中更新 maxWidth,并在每次添加新动作时加上一些额外的边距,以确保视觉上的美观。
  • 最后,通过调用 setFixedWidth(maxWidth) 来统一 QToolButton 的宽度,使其与最长的下拉菜单动作相匹配。

这样就能确保你的 QToolButton 宽度与下拉菜单中的最长动作一致。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22247

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?