如何在Mac上为当前选项卡制作QTabWidget显示图标?

时间:2013-02-17 12:24:41

标签: c++ macos qt

我使用时遇到问题 Mac上的QTabWidget::setTabIcon()。仅当选项卡不是最新时,才会显示图标。带有图标的选项卡变为当前选项后,该图标将替换为空白区域。

这是一个错误吗? OS限制?有什么问题吗?

1 个答案:

答案 0 :(得分: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;