Qt - как узнать, был ли изменен контент в дочерних виджетах? - PullRequest
2 голосов
/ 01 апреля 2010

В QMainWindow у меня есть 2 QSplitters. В этих разделителях у меня есть кнопки QTextEdit, QLineEdits, QTableWinget, Ragio и так далее ... Я хочу знать, что что-то было изменено после нажатия кнопки File-> New menu. Есть ли какой-нибудь общий метод для этого?

Где-то я читал, что рекомендуется использовать функцию isWindowModified () QMainWindow, но, похоже, это не работает.

Ответы [ 3 ]

1 голос
/ 18 февраля 2016

setWindowModified () не не передает флаг windowModified родителям. Эта ошибка описана здесь: https://bugreports.qt.io/browse/QTBUG-20150. Я только что попробовал, и действительно, это не сработало.

0 голосов
/ 01 апреля 2010

isWindowModified () может быть здесь полезен, поскольку согласно http://doc.trolltech.com/4.6/qwidget.html#windowModified-prop он распространяется до родительского элемента.

Тем не менее, я думаю, вам нужно установить это самостоятельно. Например, если вы нажали новую кнопку, которая приводит к вставке некоторого текста в QTextEdit, вам все равно нужно вызвать функцию setWindowModified () QTextEdit - которая затем будет распространяться до вашего QMainWindow - и вы можете просто проверить QMainWindow впоследствии. (Однако вы не знаете, какие дети были изменены)

0 голосов
/ 01 апреля 2010

Может быть, вам стоит взглянуть на QWidget :: changeEvent .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...