2014-10-03 2 views
3

Квартира QPushButtons не имеет указателя на зависание мыши. Есть ли способ установить стиль для плоского состояния зависания кнопки, чтобы он соответствовал стилю нормального состояния зависания кнопки (или что-то подобное)?Изменение стиля плоского состояния зависания QPushButton (без использования таблиц стилей)

QPushButton types

Я не хочу использовать таблицы стилей, если это означает, отклоняясь от взгляда по умолчанию или того, чтобы спроектировать стили кнопок с нуля.

ответ

5

Один из способов сделать это является получение QPushButton:

pushbutton.h:

#ifndef PUSHBUTTON_H 
#define PUSHBUTTON_H 

#include <QPushButton> 

class PushButton : public QPushButton 
{ 
    Q_OBJECT 
public: 
    explicit PushButton(QWidget *parent = 0); 

protected: 
    bool event(QEvent * event); 

}; 

#endif // PUSHBUTTON_H 

pushbutton.cpp:

#include "pushbutton.h" 

#include <QEvent> 

PushButton::PushButton(QWidget *parent) : 
    QPushButton(parent) 
{ 
    setFlat(true); 
} 

bool PushButton::event(QEvent *event) 
{ 
    if(event->type() == QEvent::HoverEnter) 
    { 
     setFlat(false); 
    } 

    if(event->type() == QEvent::HoverLeave) 
    { 
     setFlat(true); 
    } 

    return QPushButton::event(event); 
} 
1

"Qt путь" является реализация вашего собственного QProxyStyle или даже QStyle. Это намного эффективнее по сравнению с таблицами стилей. Внутри Qt таблицы стилей автоматически преобразуются в соответствующие объекты QProxyStyle.

Но реализовать свой собственный QStyle сложнее, а затем использовать QSS.

+0

Вы не можете достичь того, что он ищет, просто «QSS». –

+0

@JacobKrieg rly? Кстати, я вообще не говорю о QSS. –

+0

rly? 'Но реализовать свой собственный QStyle сложнее, а затем использовать QSS' –

Смежные вопросы