對于自定義小部件,有些選項卡禁止使用ALT <C>快捷方式訪問,其中<C>可以是任何鍵盤字符鍵。在 Qt 中,這稱為Mnemonic
對于此快捷方式,需要在標簽中將該字母加下劃線。

我可以看到它QPainter::drawText有一個標志引數,可以提供它,Qt::TextShowMnemonic但我想在QStaticText用于性能目的時使用它。QStaticText 允許富文本,但似乎不支持下劃線,或者我無法使其作業。
#include <QApplication>
#include <QDebug>
#include <QStaticText>
#include <QPainter>
#include <QPaintEvent>
#include <QWidget>
class TestWidget: public QWidget
{
Q_OBJECT
public:
explicit TestWidget( QWidget* parent=nullptr):QWidget(parent){}
auto paintEvent(QPaintEvent *event) -> void override
{
QPainter p(this);
QStaticText staticText; // this is not how it should be used, but for the example...
staticText.setTextFormat(Qt::TextFormat::RichText);
staticText.setText("<u>F</u>ile"); //What happens with Underline?
p.drawStaticText(QPoint(50,50), staticText);
p.drawText(QRect(50, 80, 100, 100), Qt::TextShowMnemonic, "&File"); // Ok, this works, but no static-text
}
};
#include "main.moc"
auto main (int argn, char* args[])-> int
{
QApplication app(argn, args);
qDebug() << QT_VERSION_STR;
TestWidget w;
w.resize(200,200);
w.show();
return app.exec();
}
結果是:

問題是:
如何制作下劃線或 & 助記符來使用QStaticText?
.
uj5u.com熱心網友回復:
這個好像有一個QT-BUG,差不多有 10 年的歷史了(2012 年創建的)。
QStaticText 不支持 text-decoration css 屬性。
像 font-weight、color、font-style 這樣的屬性確實有效果,但 text-decoration 沒有。請參閱附加的示例程式,其中使用元素為字串的一部分加下劃線的 HTML 字串。這似乎沒有任何效果使用 ...。此外,當僅使用純下劃線標簽時,它不起作用。QStaticText 的檔案中也存在與此問題相關的沖突,指出“為了更加方便,可以使用 QTextDocument 支持的 HTML 子集將格式應用于文本。”。但是在檔案的下一章中說“QStaticText 只能表示文本,因此只有改變文本布局或外觀的 HTML 標簽才會被尊重。例如,將影像添加到輸入 HTML 中,將導致影像將作為布局的一部分包含在內,影響文本字形的位置,但不會顯示。結果將是輸出中影像大小的空白區域。同樣,使用表格會導致文本以表格格式布置,但不會繪制邊框。”
QTextDocument 支持的 HTML 子集似乎并不完全適用于 QStaticText 格式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/378512.html
