我正在使用多个Q工具按钮 http://doc.qt.io/qt-5/qtoolbutton.htmls 在一个自定义QGrid布局 http://doc.qt.io/qt-5/QGridLayout.html小部件。这些按钮设置为根据分配的默认 QAction 显示图标 + 文本。唯一的问题是内容(图标+文本)始终左对齐。
内容(图标+文本,在屏幕截图中标记为红色框)应位于按钮的中心(由蓝色框表示)。
对于大多数情况,这很好,因为 Qt 自动尝试以最小尺寸渲染该按钮。不过,我正在拉伸按钮以使其很好地适合我的 QGridLayout。
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() 并为除标签之外的所有内容调用样式。