我遇到了一个奇怪的问题。我在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上。
非常感谢帮助。谢谢!