Hi,

After migrating two applications from Windows 7 to Windows 8, I noticed this 
strange behavior:
1) Create an application that uses QLineEdit widgets
2) Set the background color to anything other than white, e.g. blue, using qt 
stylesheets
3) Run the application. The QLineEdit backgrounds are blue
4) Hover over the widget with the mouse. The QLineEdit backgrounds are now white
5) Wait a couple seconds for the widgets to get repainted. The QLineEdit 
backgrounds are back to blue.

I could reproduce this behavior with a minimal GUI application, so the bug 
appears to be with Windows 8, Qt 4.8.4, MinGW 4.4, and their combination, 
rather than a specific piece of "user" code. I tried to manually define a 
background color when hovering, but this only shows up after the white 
background was displayed and has "timed out". Note: if the widget background is 
not modified by a stylesheet, it is white by default; so the bug is not 
visible, although probably still occurring (optional question: is a GUI bug 
still "occurring" when nobody can see it?).

Example code for reproducing the bug (Windows 8 / Qt 4.8.4 / MinGW 4.4; occurs 
in both release and debug builds; also occurs for executables generated in 
Windows 7 but being run in Windows 8):

File - widgetbackgroundmainwindows.h

#ifndef WIDGETBACKGROUNDMAINWINDOW_H
#define WIDGETBACKGROUNDMAINWINDOW_H

#include <QMainWindow>
#include <QLineEdit>
#include <QVBoxLayout>

class WidgetBackgroundMainWindow : public QMainWindow
{
    Q_OBJECT 
public:
    explicit WidgetBackgroundMainWindow(QWidget *parent = 0);
    ~WidgetBackgroundMainWindow();

private:
    QLineEdit *m_lineEdit1;
    QLineEdit *m_lineEdit2;
    QVBoxLayout *m_layout;
    QWidget *m_central;
};
#endif // WIDGETBACKGROUNDMAINWINDOW_H


File: widgetbackgroundmainwindow.cpp

#include "widgetbackgroundmainwindow.h"
#include "ui_widgetbackgroundmainwindow.h"

WidgetBackgroundMainWindow::WidgetBackgroundMainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    m_central = new QWidget();
    setCentralWidget(m_central);

    m_layout = new QVBoxLayout();
    m_central->setLayout(m_layout);

    m_lineEdit1 = new QLineEdit();
    m_lineEdit2 = new QLineEdit();

    m_layout->addWidget(m_lineEdit1);
    m_layout->addWidget(m_lineEdit2);

    m_lineEdit1->setStyleSheet("background-color:#888888;");//grey
    m_lineEdit2->setStyleSheet("background-color:#13579B;");//blue
}

WidgetBackgroundMainWindow::~WidgetBackgroundMainWindow()
{
}

Any help or ideas are much appreciated.

Kind regards,

Thomas COLIN

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to