Russian Qt Forum
Сентябрь 30, 2024, 14:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как после записи измененного текста QTextEdit отметить, что он "не менялся"?  (Прочитано 5547 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Июль 15, 2008, 16:16 »

Здравствуйте!


Что-то воткнуть не могу, как сделать следующее. Есть текстовый редактор на базе QTextEdit. И нужно сделать вот что. Если пользователь нажал кнопку "сохранить", текст сохранился в файл, и надо в каком-то свойстве установить, что текст не менялся.

Блин что-то путано получается. Скажу другими словами.

То есть нужно, чтобы сразу после сохранения, какой-то метод показывал, что содержимое не было изменено (до тех пор, естественно, пока пользователь не изменит что-нибудь в тексте). Ну то есть такое "интеллектуальное" поведение редактора, чтоб он лишний раз не просил сохранить текст при выходе, если пользователь сделал сохранение, и больше ничего не менял.

Вопрос 1. Есть ли метод, который информирует, был ли изменен текст QTextEdit? Что-то я не нашел, и на ум приходит только костыль через отловлю сигнала textChanged() и добавления своей логики по изменению дополнитеьного флага в этом обработчике.

Вопрос 2. Если такой метод есть, то можно ли принудительно в нужный момент (после сохранения текста в файл) изменить его флаг (?) так, чтобы данный метод показывал, что текст небыл изменен?
« Последнее редактирование: Июль 15, 2008, 16:53 от xintrea » Записан

Собираю информацию по крупицам
http://webhamster.ru
Karl-Philipp
Гость
« Ответ #1 : Июль 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.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #2 : Июль 15, 2008, 16:53 »

см.

Цитировать
QTextDocument * QTextEdit::document () const

и  QTextDocument:

Цитировать
bool isModified () const
void setModified ( bool m = true )
void modificationChanged().
« Последнее редактирование: Июль 15, 2008, 16:55 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #3 : Июль 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" и там этих методов нет.. Понятно, их и не может быть в этом списке, но это же всю иерархию надо расковырять чтоб понять что из чего состоит.. Как вы это делаете?
Записан

Собираю информацию по крупицам
http://webhamster.ru
Red Devil
Гость
« Ответ #4 : Июль 15, 2008, 17:54 »

Это методы в QTextDocument.
Они определны там потому что именно этот класс управляет содержимым текстом. QTextEdit предоставляет доступ для того чтобы этот текст изменять.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Июль 15, 2008, 18:12 »

Вопрос - как вы эти методы в QtAssistant находите? Вот я смотрю страницу "List of All Members for QTextEdit" и там этих методов нет.. Понятно, их и не может быть в этом списке, но это же всю иерархию надо расковырять чтоб понять что из чего состоит.. Как вы это делаете?

Во-первых это опыт, накомленый за годы работы на Qt. Во-вторых нужно просматривать методы класса, обращать внимание на типы возвращаемого результата, смотреть описание этих типов, ну и так далее. Походу просмотра нужно запоминать наличие тех или иных методов
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.175 секунд. Запросов: 23.