J'essaie de créer un widget personnalisé héritant de QFrame. Tout fonctionne bien, mais je suis incapable de dessiner le rectangle de mise au point autour de mon widget. Ci-dessous l'exemple de code que j'utilise pour le dessin:Problème avec le cadre de mise en évidence dans Qt
frame.h
class Frame : public QFrame {
Q_OBJECT
public:
Frame(QWidget *parent = 0);
~Frame();
protected:
void paintEvent(QPaintEvent *event);
private:
Ui::Frame *ui;
};
frame.cpp
Frame::Frame(QWidget *parent) :
QFrame(parent),
ui(new Ui::Frame)
{
ui->setupUi(this);
setFocusPolicy(Qt::ClickFocus);
}
Frame::~Frame()
{
delete ui;
}
void Frame::paintEvent(QPaintEvent *event)
{
QFrame::paintEvent(event);
if (hasFocus()) {
QStylePainter painter(this);
QStyleOptionFocusRect option;
option.initFrom(this);
option.backgroundColor = palette().dark().color();
painter.drawPrimitive(QStyle::PE_FrameFocusRect, option);
}
}
Ce que je veux dire par « incapable de tirer cadre de mise au point » est que lorsque vous cliquez sur un widget standard qui accepte le focus (disons QLineEdit), il est entouré d'un rectangle bleu. Lorsque je clique sur mon widget, aucun rectangle de ce type n'est dessiné. Y at-il d'autres choses que je devrais faire en plus de mettre focusPolicy sur mon widget?
J'ai essayé hier votre code (sauf partie setupUi de celui-ci) et semblent dessiner le cadre à chaque fois que le contrôle se concentre. Pouvez-vous, pls, partager plus de détails sur ce qui est erroné avec elle. Thnx –