Flat QPushButtons
没有鼠标悬停的迹象。有没有办法为平面按钮悬停状态设置样式,以便它匹配正常按钮悬停状态(或类似的东西)的样式?
我不想使用样式表,如果它意味着偏离默认外观或必须从头开始设计按钮样式。
答案 0 :(得分: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 :(得分:1)
“Qt way”是实现您自己的QProxyStyle
甚至是QStyle
。与样式表相比,它更有效。在Qt内部,样式表会自动转换为相应的QProxyStyle
个对象。
但是实现自己的QStyle
更难,然后使用QSS。