【发布时间】:2019-08-26 08:04:09
【问题描述】:
我有一个用c++ 编写的小型qt 应用程序。我希望相同的应用程序在带有触摸屏的小型嵌入式设备中运行,但很少QToolButton 的大小太小而无法舒适地看到。我已经厌倦了通过修改以下函数来增加大小(添加setfont成员调用):
QToolButton* ColorToolBar::setupToolButton(QString name, QString iconPath, bool isCheckable)
{
QToolButton *p_btn = new QToolButton(this);
p_btn->setCheckable(isCheckable);
p_btn->setIcon(QIcon(iconPath));
p_btn->setIconSize(QSize(ICON_WIDTH, ICON_HEIGHT));
p_btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
QFont font = p_btn->font();
font.setPointSize(10);
p_btn->setFont(font);
if (!name.isEmpty())
p_btn->setText(name);
p_btn->setMinimumWidth(MINIMUM_WIDTH);
p_btn->setMinimumHeight(MINIMUM_HEIGHT);
return p_btn;
}
我可以使用setIconSize 成员函数更改Icon size,但setPointSize 和setFont 不执行任何操作。我想要更大的文字和图标。
我有一个类 AdvancePlotToolBar,其中包含所有 QToolButton。我的 qss 文件看起来像:
AdvancePlotToolBar QToolButton {
border: none;
padding-right: 10px;
padding-bottom: 5px;
}
AdvancePlotToolBar QToolButton:hover {
border-bottom: 3px solid #52ce90;
padding-bottom: 5px;
}
AdvancePlotToolBar QToolButton:pressed {
border-bottom: 3px solid #52ce90;
}
AdvancePlotToolBar QToolButton:checked {
border-bottom: 3px solid #52ce90;
margin: 0px;
}
编辑:
下面的代码显示了我如何将QToolButton 添加到AdvancePlotToolbar 的布局中。
AdvancePlotToolBar::AdvancePlotToolBar(QWidget *parent) : QWidget(parent)
{
transformationButton_ = setupToolButton("Transformations", "://images//summation.png", true);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(transformationButton_);
setLayout(layout);
}
【问题讨论】:
-
由于小部件大小(可能)取决于您将小部件插入布局的方式,因此您应该发布相关代码。目前我们只看到按钮的初始化代码,但是缺少布局代码。
-
用所需的代码更新了我的问题。
-
您能否发布一个重现此问题的最小示例?不厚脸皮... :) 只是调查。围绕字体肯定存在一些不一致的行为,以及从什么和何时继承的内容,到目前为止,我已经发现了至少一个带有
Qt::AA_UseStyleSheetPropagationInWidgetStyles标志的 Qt 错误,即使根本不使用 CSS。并且让QStyleSheetStyle参与会产生“意想不到的”差异。但是... 在QToolButtons 上明确设置字体时,我实际上无法重现您所描述的内容。我想你可能也在其他地方设置字体?我很想重现它。 TIA。
标签: c++ qt font-size qtoolbutton