QTableWidget标题

时间:2016-06-22 11:23:37

标签: qt qstring qtablewidget superscript

我正在学习QT并且必须设计一个这样的表

example

我需要" m2"用" 2"作为上标。

这是我的代码:

ui.tableWidget->horizontalHeaderItem(0)->setText("Date");
ui.tableWidget->horizontalHeaderItem(0)->setBackgroundColor(QColor(217, 217, 217));
ui.tableWidget->horizontalHeaderItem(1)->setText("House address");
ui.tableWidget->horizontalHeaderItem(1)->setBackgroundColor(QColor(217, 217, 217));
ui.tableWidget->horizontalHeaderItem(2)->setText("Area \n [m\u00B2]");
ui.tableWidget->horizontalHeaderItem(2)->setBackgroundColor(QColor(217, 217, 217));
ui.tableWidget->horizontalHeaderItem(3)->setText("Price \n [USD]");
ui.tableWidget->horizontalHeaderItem(3)->setBackgroundColor(QColor(217, 217, 217));
ui.tableWidget->horizontalHeaderItem(4)->setText("Price/Area \n [USD/m\u00B2]");
ui.tableWidget->horizontalHeaderItem(4)->setBackgroundColor(QColor(217, 217, 217));

我用过" \ u00B2"为" 2"作为上标但它不起作用,背景颜色也不会改变。请帮助我,非常感谢!

3 个答案:

答案 0 :(得分:0)

尝试:

ui.tableWidget->horizontalHeaderItem(2)->setText(QString::fromUtf8("Area \n [m\u00B2]"));

答案 1 :(得分:0)

尝试QString("Area \n [m%1]").arg(QChar(0x00B2))QString("Area \n [%1]").arg(QChar(0x33A1))。它应该适用于任何源编码。

如果它不起作用,也许您的字体不支持显示此符号。如果没有其他方法,您可以尝试使用HTML模仿QLabel标题:"<B> Area <BR> [m<SUP>2</SUP>] </B>"。请记住,将QWidgets设置为QTableWidget通常很难看并且可能很慢。你的架构会很糟糕。

答案 2 :(得分:0)

搜索后我发现了一个解决方案,我不知道它为什么会起作用,但对我来说效果很好

-LD:\foo -lid3v2

然后

const char s[] = {
    0x6D,               // m
    0xC2, 0xB2,         // superscript two
    0x00                // NUL terminator
};
QString str = QString::fromUtf8(s);