【发布时间】:2015-04-15 11:07:49
【问题描述】:
我在自定义 QGridLayout 小部件中使用多个 QToolButtons。这些按钮设置为根据分配的默认 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:我在another forum 中发现了以下评论,但它似乎颇具侵略性,我还不是很清楚:
您可以尝试使用样式表进行水平对齐,但您可能必须实现 QStyle 代理并为 QStyle::CE_ToolButtonLabel 重新实现 drawControl() 或者从 QToolButton 派生,覆盖 paintEvent() 并为标签以外的所有内容调用样式。
【问题讨论】:
-
请贴出相关代码
-
@user2672165:我在代码中编辑了问题。不确定在这种情况下是否有帮助......
-
在
void QGridLayout::addWidget(QWidget * widget, int row, int column, Qt::Alignment alignment = 0)中使用对齐怎么样?您也可以发布一张图片,说明它的外观以及您希望它的外观,因为需要考虑几个参数? -
@user2672165 我可能说得不够清楚:网格布局不是问题。按钮位置完美, (almost) 尺寸完美。我遇到的问题是按钮内的内容没有居中。请参阅我添加到问题中的屏幕截图。
-
好的。我想我明白了。我会尝试修改 pButton->layout()。 QToolButton 应该有一个 QHBoxLayout。
标签: qt qt5 text-alignment qstyle qstylesheet