Qt 5- QTextEdit恢复为默认字体

时间:2014-03-14 01:37:48

标签: c++ qt qtextedit

我正在使用QT库编写文本编辑器。我正在为我的主编辑器小部件继承QTextEdit

这是我的代码:

editorwidget.hpp

#ifndef EDITORWIDGET_H_INCLUDED
#define EDITORWIDGET_H_INCLUDED

#include <QTextEdit>
#include <QFile>

class EditorWidget : public QTextEdit
{
    Q_OBJECT
    public:
    EditorWidget(const QString& filename, QWidget* parent = 0);
    ~EditorWidget();

    public slots:
    void saveRequested();
    //...

    private:
    QFile* editorFile;
};

#endif

editorwidget.cpp

#include "editorwidget.hpp"

EditorWidget::EditorWidget(const QString& filename, QWidget* parent)
    : QTextEdit(parent)
{
    this->setFontPointSize(getFontSize()); // this is in another file
    this->setFontFamily(getFont()); // also in another file
    // those two functions get the font and font size from the user's settings
    this->editorFile = new QFile(filename);
}

EditorWidget::~EditorWidget()
{
    if(this->editorFile->isOpen()) this->editorFile->close():
    delete editorFile;
}

...

创建EditorWidget时,字体会正确显示。但是,当我输入一些文本,然后将其删除时,窗口小部件将恢复为默认字体。

我不明白发生了什么;我搜索了Google和Stack Overflow,却一无所获。任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

This主题可能会有所帮助。 setFont...()函数设置编辑光标后面的格式,但默认格式是免费的。 QT Docs也解释了这种情况。

&#34; ...当前样式用于呈现所有标准Qt小部件的内容,可以自由选择使用小部件字体,或者在某些情况下,忽略它(部分或完全)。特别是某些样式,如GTK样式,Mac样式,Windows XP和Vista样式,对窗口小部件字体应用特殊修改以匹配平台的本机外观。因此,不能保证为窗口小部件的字体分配属性会改变窗口小部件的外观。&#34;

在您的情况下,您可以尝试使用setStyleSheet()