0

QTabWidget::setTabIcon()在 Mac 上使用时遇到问题。The icon is displayed only when the tab is not current. 带有图标的选项卡变为当前选项卡后,图标将替换为空白区域。

这是一个错误吗?操作系统限制?有什么解决办法吗?

4

1 回答 1

0

正如我在 QMacStyle::drawControl 方法中看到的,没有用于绘制图标元素的代码:

p->save();
rotateTabPainter(p, myTab.shape, myTab.rect);

QPalette np = tab->palette;
np.setColor(QPalette::WindowText, QColor(0, 0, 0, 75));
QRect nr = subElementRect(SE_TabBarTabText, opt, w);
nr.moveTop(-1);
int alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextHideMnemonic;
proxy()->drawItemText(p, nr, alignment, np, tab->state & State_Enabled,
                           tab->text, QPalette::WindowText);

np.setColor(QPalette::WindowText, QColor(255, 255, 255, 255));
nr.moveTop(-2);
proxy()->drawItemText(p, nr, alignment, np, tab->state & State_Enabled,
                           tab->text, QPalette::WindowText);
p->restore();

就我而言,作为快速解决方案,我通过在前一个代码之前添加以下代码来解决此问题:

QString oldText = myTab.text;
myTab.text = "";
QCommonStyle::drawControl(ce, &myTab, p, w);
myTab.text = oldText;
于 2013-04-09T07:51:15.487 回答