Название: Как после записи измененного текста QTextEdit отметить, что он "не менялся"? Отправлено: xintrea от Июль 15, 2008, 16:16 Здравствуйте!
Что-то воткнуть не могу, как сделать следующее. Есть текстовый редактор на базе QTextEdit. И нужно сделать вот что. Если пользователь нажал кнопку "сохранить", текст сохранился в файл, и надо в каком-то свойстве установить, что текст не менялся. Блин что-то путано получается. Скажу другими словами. То есть нужно, чтобы сразу после сохранения, какой-то метод показывал, что содержимое не было изменено (до тех пор, естественно, пока пользователь не изменит что-нибудь в тексте). Ну то есть такое "интеллектуальное" поведение редактора, чтоб он лишний раз не просил сохранить текст при выходе, если пользователь сделал сохранение, и больше ничего не менял. Вопрос 1. Есть ли метод, который информирует, был ли изменен текст QTextEdit? Что-то я не нашел, и на ум приходит только костыль через отловлю сигнала textChanged() и добавления своей логики по изменению дополнитеьного флага в этом обработчике. Вопрос 2. Если такой метод есть, то можно ли принудительно в нужный момент (после сохранения текста в файл) изменить его флаг (?) так, чтобы данный метод показывал, что текст небыл изменен? Название: Re: Как после записи измененного текста QTextEdit отметить, что он "не менялся"? Отправлено: Karl-Philipp от Июль 15, 2008, 16:51 >>Если пользователь нажал кнопку "сохранить", текст сохранился в файл, и надо в каком-то свойстве установить, что текст _не менялся_.
Может просто смотреть на дату изменения файла документа и относительно нее уже делать те или иные действия. >>То есть нужно, чтобы сразу после сохранения, метод textChanged() ... Что за метод? Может Вы имеете в виду сигнал Цитировать void QTextEdit::textChanged () [signal] This signal is emitted whenever the document's content changes; for example, when text is inserted or deleted, or when formatting is applied. Название: Re: Как после записи измененного текста QTextEdit отметить, что он "не менялся"? Отправлено: pastor от Июль 15, 2008, 16:53 см.
Цитировать QTextDocument * QTextEdit::document () const и QTextDocument: Цитировать bool isModified () const void setModified ( bool m = true ) void modificationChanged(). Название: Re: Как после записи измененного текста QTextEdit отметить, что он "не менялся"? Отправлено: xintrea от Июль 15, 2008, 17:01 см. Цитировать QTextDocument * QTextEdit::document () const и QTextDocument: Цитировать bool isModified () const void setModified ( bool m = true ) void modificationChanged(). Спасибо, видимо то что нужно. Вопрос - как вы эти методы в QtAssistant находите? Вот я смотрю страницу "List of All Members for QTextEdit" и там этих методов нет.. Понятно, их и не может быть в этом списке, но это же всю иерархию надо расковырять чтоб понять что из чего состоит.. Как вы это делаете? Название: Re: Как после записи измененного текста QTextEdit отметить, что он "не менялся"? Отправлено: Red Devil от Июль 15, 2008, 17:54 Это методы в QTextDocument.
Они определны там потому что именно этот класс управляет содержимым текстом. QTextEdit предоставляет доступ для того чтобы этот текст изменять. Название: Re: Как после записи измененного текста QTextEdit отметить, что он "не менялся"? Отправлено: pastor от Июль 15, 2008, 18:12 Вопрос - как вы эти методы в QtAssistant находите? Вот я смотрю страницу "List of All Members for QTextEdit" и там этих методов нет.. Понятно, их и не может быть в этом списке, но это же всю иерархию надо расковырять чтоб понять что из чего состоит.. Как вы это делаете? Во-первых это опыт, накомленый за годы работы на Qt. Во-вторых нужно просматривать методы класса, обращать внимание на типы возвращаемого результата, смотреть описание этих типов, ну и так далее. Походу просмотра нужно запоминать наличие тех или иных методов |