QTableWidget 的上标 header
superscript for QTableWidget header
我正在学习 QT,必须设计一个像这样的 table
我需要 "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”作为上标,但它不起作用,背景颜色也没有改变。请帮助我,非常感谢!
尝试:
ui.tableWidget->horizontalHeaderItem(2)->setText(QString::fromUtf8("Area \n [m\u00B2]"));
试试 QString("Area \n [m%1]").arg(QChar(0x00B2))
或 QString("Area \n [%1]").arg(QChar(0x33A1))
。它应该适用于任何源编码。
如果还是不行,可能是你的字体不支持这个符号显示。如果没有其他办法,你可以尝试用 QLabel 和 HTML 模仿 headers,像这样:"<B> Area <BR> [m<SUP>2</SUP>] </B>"
。请记住,将 QWidgets 设置为 QTableWidget 通常很丑陋并且可能很慢。而且你的架构会很糟糕。
经过搜索,我找到了解决方案,我不太清楚它为什么有效,但对我来说效果很好
const char s[] = {
0x6D, // m
0xC2, 0xB2, // superscript two
0x00 // NUL terminator
};
QString str = QString::fromUtf8(s);
然后
ui.tableWidget->horizontalHeaderItem(2)->setText("Area \n [m" + str + "]");
我正在学习 QT,必须设计一个像这样的 table
我需要 "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”作为上标,但它不起作用,背景颜色也没有改变。请帮助我,非常感谢!
尝试:
ui.tableWidget->horizontalHeaderItem(2)->setText(QString::fromUtf8("Area \n [m\u00B2]"));
试试 QString("Area \n [m%1]").arg(QChar(0x00B2))
或 QString("Area \n [%1]").arg(QChar(0x33A1))
。它应该适用于任何源编码。
如果还是不行,可能是你的字体不支持这个符号显示。如果没有其他办法,你可以尝试用 QLabel 和 HTML 模仿 headers,像这样:"<B> Area <BR> [m<SUP>2</SUP>] </B>"
。请记住,将 QWidgets 设置为 QTableWidget 通常很丑陋并且可能很慢。而且你的架构会很糟糕。
经过搜索,我找到了解决方案,我不太清楚它为什么有效,但对我来说效果很好
const char s[] = {
0x6D, // m
0xC2, 0xB2, // superscript two
0x00 // NUL terminator
};
QString str = QString::fromUtf8(s);
然后
ui.tableWidget->horizontalHeaderItem(2)->setText("Area \n [m" + str + "]");