Qt自定义QSpinBox字体无法正确更新

时间:2018-06-15 12:54:37

标签: c++ qt fonts qt5 qspinbox

我遇到了一个奇怪的问题。我在Windows上使用Qt 5.9.2。

我将QSpinBox子类化为QHexSpinBox,它将值显示为十六进制。

标题如下所示:

#include <QSpinBox>

class QHexSpinBox : public QSpinBox
{
    Q_OBJECT
public:
    QHexSpinBox(QWidget *parent = 0);
    unsigned int hexValue() const;
    void setHexValue(unsigned int value);
protected:
    QString textFromValue(int value) const;
    int valueFromText(const QString &text) const;
    QValidator::State validate(QString &input, int &pos) const;

private:
    inline unsigned int u(int i) const;
    inline int i(unsigned int u) const;

};

我现在要做的是将QHexSpinBox的值与另一个值进行比较。如果它们不同,QHexSpinBox的字体应该是斜体和粗体。为此我在我的主程序中做了一个简单的功能:

void setBoldAndItalic(QWidget *widget, bool enable)
{
    QFont tempFont = widget->font();
    tempFont.setBold(enable);
    tempFont.setItalic(enable);
    widget->setFont(tempFont);

}

这适用于普通的QSpinBox。但是在我的自定义QHexSpinBox上,只有在比较两次值时才会更改字体。它从来没有在第一次尝试。我不确定是什么导致了这一点。

这也发生在另一个子类QDoubleSpinBox上。

非常感谢帮助。谢谢!

0 个答案:

没有答案