小编Sch*_*mpf的帖子

如何在QStyledItemDelegate中绘制正确的文本颜色

我想绘制一个遵循当前样式的自定义项目委托。但是“ WindowsVista / 7”样式和“ WindowsClassic”样式之间的文本颜色有所不同。

winViste / 7和winClassic之间的区别

我使用以下代码绘制背景(工作):

void FriendItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
    painter->save();

    QStyleOptionViewItem opt = option;
    initStyleOption(&opt, index);
    QStyle *style = opt.widget ? opt.widget->style() : QApplication::style();
    QSize hint = sizeHint(opt, index);

    style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget);
    ...
}
Run Code Online (Sandbox Code Playgroud)

如何以正确的颜色绘制文本?

我不能style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget);用来绘制整个项目,因为我必须绘制比一行文字更多的特殊文字。(此功能可以正确绘制颜色。)

我尝试过,style->drawItemText(painter, opt.rect, opt.displayAlignment, opt.palette, true, "Hello World!");但它总是漆成黑色。对于painter->drawText(),我不知道如何设置正确的笔颜色。

qt qstyle qt5 qstyleditemdelegate

5
推荐指数
1
解决办法
2463
查看次数

使用 GCC 链接器强制执行 32 位枚举

我正在为 ARM 设备(无操作系统)编写裸机应用程序。我需要 32 位枚举,所以我用-fno-short-enums编译器标志编译了应用程序。如果没有这个标志,我会得到变量枚举(并且通过向0xFFFFFFFF每个枚举添加附加值来强制大小不是一种选择)。

现在我收到每个对象的以下链接器警告:

c:/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: ./src/test.o uses 32-bit enums yet the output is to use variable-size enums; use of enum values across objects may fail
Run Code Online (Sandbox Code Playgroud)

这只是一个警告,没有错误。但这究竟是什么意思?如何指定“输出”?

我尝试使用上述标志重新编译 newlib 以确保所有对象使用相同的枚举大小,但我仍然收到警告。有什么我错过了吗?

c enums gcc arm ld

5
推荐指数
1
解决办法
4624
查看次数

标签 统计

arm ×1

c ×1

enums ×1

gcc ×1

ld ×1

qstyle ×1

qstyleditemdelegate ×1

qt ×1

qt5 ×1