QT:首次单击后,复选框字体更改

时间:2014-06-05 16:07:03

标签: qt

我遇到一个奇怪的问题,即设置为QCheckBox的字体会在第一次点击后更改字体以检查或取消选中它。我不知道为什么。 checkbox是一个简单的QCheckBox。字体变化很微妙。就像从低分辨率字体,到具有轻微颜色变化的抗锯齿。

我没有这样做的代码,我不知道它为什么会发生.3

样式表:

QCheckBox#TestCheck::indicator:checked
{
    image: url(:/images/box_checked.png);
    color: #535353;
}

QCheckBox#TestCheck::indicator:unchecked
{
    image: url(:/images/box_unchecked.png);
    color: #535353;
}

我的代码:

    QFont font("Avenir LT Com");
    font.setWeight(QFont::Bold);
    font.setStyleStrategy(QFont::PreferAntialias);
    font.setPixelSize(16);

    this->checkbox = new QCheckBox(this);
    this->shareScreenCheckbox->setObjectName(QString::fromUtf8("TestCheck"));
    this->checkbox->setGeometry(10, 10, 400, 27);
    this->checkbox->setText("This is a test");
    this->checkbox->setFont(font); 
    this->checkbox->show();

最终结果:

当你发起......

as you launch... 首先点击......

first click

再次点击...

enter image description here

正如您所看到的......字体更改不起作用。第一种字体不同。单击更改字体,并保留它。发生了什么事?

1 个答案:

答案 0 :(得分:0)

在qt 5.3下运行代码后,我无法重现您的问题。但是前段时间我有一个非常类似的问题,qt 5.1.1也许这个解决方法对你有帮助

QT 5.1.1: Checkbox in QWebview shows strange behavior under Win 7 (x64) / Win 8

class CustomStyle : public QProxyStyle
{
    void drawControl(ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const
{
    if (element == QStyle::CE_CheckBox && dynamic_cast<QWebView*>(option->styleObject))
        option->styleObject->setProperty("_q_no_animation", true);
    QProxyStyle::drawControl(element, option, painter, widget);
}
};

如果没有,你应该在https://bugreports.qt-project.org

写一个bug报告