首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有图标+文本的QToolButton :如何将两者居中?

带有图标+文本的QToolButton :如何将两者居中?
EN

Stack Overflow用户
提问于 2015-02-14 13:16:57
回答 2查看 9.7K关注 0票数 4

我在自定义的QToolButton小部件中使用多个QGridLayout。这些按钮被设置为基于指定的默认QAction显示图标+文本。唯一的问题是内容(图标+文本)总是左对齐。

内容(图标+文本,在屏幕截图中标记为红色框)应该在按钮中居中(由蓝色框表示)。

在大多数情况下,这是很好的,因为Qt自动尝试以最小的大小呈现该按钮。然而,我正在拉伸按钮,以很好地适应我的QGridLayout。

代码语言:javascript
运行
复制
QToolButton* pButton = new QToolButton(0);
pButton->addDefaultAction(pAction);
pButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
pButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);

QGridLayout *pActionAreaLayout = new QGridLayout;
pActionAreaLayout->addWidget(pSomeOtherWidget, 0, 0, 1, 2);
pActionAreaLayout->addWidget(pButton , 1, 0, 1, 1);

有没有办法迫使内容在按钮中居中?

PS:我在http://www.qtcentre.org/threads/60893-Align-text-and-icon-of-QToolButton-on-center?p=269529#post269529中发现了以下评论,但这似乎很有侵略性,对我来说还不太清楚:

您可以尝试使用样式表进行水平对齐,但是您可能必须实现一个QStyle代理,为QStyle::CE_ToolButtonLabel重新实现drawControl()或从QToolButton派生,覆盖paintEvent(),并为除标签之外的所有东西调用样式。

EN

Stack Overflow用户

回答已采纳

发布于 2015-02-20 13:51:18

正如我在回答你的另一个问题时建议的那样。https://stackoverflow.com/a/28630318/1917249不使用QToolButton,只需使用QPushButton,并在需要时添加弹出菜单。

然后,您将不会有不同大小的QToolButtonQPushButton小部件。你会有居中的图标和文字。

弹出菜单可以很容易地添加到QPushButton (只有小箭头不会显示)

代码语言:javascript
运行
复制
QPushButton *pushButton = new QPushButton(toolAction->icon(), "PushButton", window);
// window - widget where button is placed ( to get correct QMenu position )
QObject::connect(pushButton, &QPushButton::released, [window, pushButton, action](){
    QMenu menu;
    menu.addAction(action);
    QPoint pos = window->mapToGlobal(pushButton3->pos());
    pos += QPoint(0, pushButton->height());
    menu.exec(pos);
 });

或者您可以子类QPushButton并在那里添加弹出菜单处理。更好的方法是在QToolButton中用图标对文本进行居中,或者使用与QPushButtonQToolButton大小相同的文本。

关于复杂的例子,请看我的答案:https://stackoverflow.com/a/28630318/1917249

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28516012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档