Элегантный способ получить, если элемент сфокусирован в функции QGraphicsItem :: shape () - PullRequest
0 голосов
/ 01 августа 2011

В графическом приложении qt я могу узнать, сосредоточен ли мой объект, который наследуется от QGraphicsItem, в методе рисования:

Qt Code:

void MyQGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *)
{
if (option->state & QStyle::State_HasFocus) {
//if focus some shape

} else {
//if no focus another shape
}
}

но я должен щелкнуть по нему, и форма должна измениться, независимо от того, сфокусирован он или нет. как я могу получить, если сфокусированную информацию в

Qt Code:

QPainterPath QGraphicsItem::shape() const

метод соответствующим образом? Я думаю объявить глобальную переменную, но мне не нравится эта идея. спасибо

1 Ответ

1 голос
/ 01 августа 2011

Использовать QGraphicsItem :: hasFocus () :

Возвращает true, если этот элемент активен, и у него или его прокси фокуса есть фокус ввода с клавиатуры;в противном случае возвращает false.

Кстати, если вы хотите, чтобы форма изменялась при фокусировке элемента, вам необходимо переопределить focusInEvent () и focusOutEvent () и не забывать вызывать prepareGeometryChange () передформа меняется.

...