对于自定义小部件,有禁止使用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 合作
。
发布于 2021-12-04 11:26:58
似乎有一个QT-BUG为这个,几乎10年前(它创建于2012年)。
QStaticText不支持文本装饰css属性. 字体重量、颜色、字体样式等属性确实有效果,但文字装饰没有效果.请参阅附带的示例程序,其中HTML字符串使用一个元素在字符串的一部分下划线。这似乎没有任何效果使用..。同样,当使用简单的下划线标记时,它也不起作用。 QStaticText文档中也有一个关于这个问题的冲突,声明“为了额外的方便,可以使用QTextDocument支持的HTML子集对文本应用格式设置”。然而,在文档的下一章中说,"QStaticText只能表示文本,因此只有改变文本布局或外观的HTML标记才会受到尊重。例如,在输入的HTML中添加图像将导致图像作为布局的一部分,影响文本符号的位置,但不会显示。结果将是输出中图像大小的空区域。类似地,使用表格会导致文本以表格格式排列,但边框不会被绘制。“ QTextDocument支持的HTML子集似乎并不完全适用于QStaticText格式。
https://stackoverflow.com/questions/70218324
复制相似问题