2014-10-27 3 views
0

У меня есть число QGraphicsTextItem и QGraphicsItem, написанное внутри QGraphicsView. Этот QGraphicsView был добавлен в основную категорию Qwidget.Как удалить фокус QGraphicsTextItem из основного QWidget

Я написал «FocusOutEvent» для этого QGraphicsTextItem и фокус становится удаляется только тогда, когда «MousePressEvent» называется в QGraphicsView.

Теперь моя забота о том, как удалить фокус этого QGraphicsTextItem, когда MousePressEvent называется вне QGraphicsView?

В моей mainwindow.cpp я написал mousePressEvent функцию:

void EyGuiMainWindow::mousePressEvent(QMouseEvent *e) 
{ 
    QWidget *w = QApplication::focusWidget(); 
    if(w) 
    w->clearFocus(); 
} 

Но это не очищая QGraphicsTextItem.

Ожидающий положительный отклик.

ответ

1

QGraphicsTextItem - это не виджет, а QGraphicsItem. Элементы графики добавляются в QGraphicsScene и просматриваются одним или несколькими QGraphicsView виджетами.

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

Чтобы очистить фокус от QGraphicsTextItem, вызовите его функцию clearFocus. Если у вас нет указателя на элемент, вы можете получить список всех предметов в сцене с помощью функции items() и выполнить итерацию по ним.

+1

Большое спасибо за ваш ответ. Я использовал Items() для получения списка элементов сцены и повторил их, чтобы очистить его. Он работал нормально. – Bharathi

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