Как предотвратить появление кнопок Qt в отдельном фрейме? - PullRequest
3 голосов
/ 15 февраля 2010

Я работаю над приложением PyQt. В настоящее время есть панель состояния (определенная как QWidget), которая содержит QHBoxLayout. Этот макет часто обновляется с помощью QPushButton s, созданного другой частью приложения.

Всякий раз, когда появившиеся кнопки необходимо изменить (что довольно часто), вызывается эффект обновления. Существующие кнопки удаляются из макета (путем вызова layout.removeWidget(button), а затем button.setParent(None)), а новые кнопки добавляются в макет.

Как правило, это работает. Но иногда, когда я вызываю button.setParent(None) на кнопке для удаления, это заставляет ее выскочить из приложения и начать плавать в отдельном кадре.

Как удалить кнопку из макета и убедиться, что она не начинает плавать?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2010

Попробуйте позвонить QWidget::hide() на кнопку перед удалением из макета, если не хотите удалять свою кнопку.

2 голосов
/ 15 февраля 2010

Вы должны вызвать метод кнопки close().Если вы хотите, чтобы он был удален при закрытии, вы можете установить атрибут Qt.WA_DeleteOnClose:

button.setAttribute(Qt.WA_DeleteOnClose)
...