Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: M9yT от Ноябрь 26, 2010, 15:57



Название: Заголовок окна
Отправлено: M9yT от Ноябрь 26, 2010, 15:57
Привет всем.
В общем, хочу при открытии файла менять windowTitle, т.е открыл файл -  windowTitle принял его имя ( не путь + имя ).
Так же, хочу сделать файл защищенным, т.е. если я его открыл, то при удалении возникнет ошибка.
Заранее спасибо!


Название: Re: Заголовок окна
Отправлено: Alex Custov от Ноябрь 26, 2010, 16:10
имя берёшь из QFileInfo, вставляешь через setWindowTitle()


Название: Re: Заголовок окна
Отправлено: M9yT от Ноябрь 26, 2010, 16:35
имя берёшь из QFileInfo, вставляешь через setWindowTitle()
А как обратиться к главному окну через ui ? или нужно создать объект моего класса, который я унаследовал от QMainWindow, и там уже вызвать setWindowTitle()? Но так не меняется.


Название: Re: Заголовок окна
Отправлено: crashsp от Ноябрь 26, 2010, 16:43
Ну как я понимаю объект QMainWindow у тебя уже создан надо обратиться к нему по указателю и вызвать эту функцию


Название: Re: Заголовок окна
Отправлено: M9yT от Ноябрь 26, 2010, 17:19
Ну как я понимаю объект QMainWindow у тебя уже создан надо обратиться к нему по указателю и вызвать эту функцию
И как получить на него указатель, если он создан в функции main() ?


Название: Re: Заголовок окна
Отправлено: whirlwind от Ноябрь 26, 2010, 17:25
Ну как я понимаю объект QMainWindow у тебя уже создан надо обратиться к нему по указателю и вызвать эту функцию
И как получить на него указатель, если он создан в функции main() ?
если ты файл открываешь внутри одного из методов своего наследника QMainWindow, то можешь вызвать setWindowTitle() просто так


Название: Re: Заголовок окна
Отправлено: M9yT от Ноябрь 26, 2010, 17:32
если ты файл открываешь внутри одного из методов своего наследника QMainWindow, то можешь вызвать setWindowTitle() просто так
Воо, точно!
А вот как теперь файл защитить?


Название: Re: Заголовок окна
Отправлено: crashsp от Ноябрь 26, 2010, 18:42
Цитировать
А вот как теперь файл защитить?
Я не когда не задавался этим вопросом так как считал если приложение открыло файл, ось не позволит его удалить из вне
И вот странность если открываешь файл  в main() Ось выдает ошибку, а если файл открыть в другом месте программы файл удаляется без проблем(
так что +1 к вопросу ???


Название: Re: Заголовок окна
Отправлено: vlad-mal от Ноябрь 27, 2010, 23:58
Цитировать
А вот как теперь файл защитить?
Я ... считал если приложение открыло файл, ось не позволит его удалить из вне
...
Не-а. :)
От оси зависит.
Для MS Windows указывается в параметре dwShareMode метода CreateFile: http://msdn.microsoft.com/en-us/library/aa363858%28VS.85%29.aspx
Если 0 - то действительно, другим процессам нельзя открывать файл/устройство с запрососами на чтение, запись и удаление.
FILE_SHARE_READ (0X01) - разрешено открывать файл/устройство с запросом "читать"
FILE_SHARE_WRITE (0X02) - разрешено открывать файл/устройство с запросом "писать"
FILE_SHARE_DELETE (0X04) - разрешено открывать файл/устройство с запросом "удалить"

Для Linux - ХЗ.  ::)

А еще - для некоторых осей (и даже некоторых файловых систем) есть понятие "владельца" файла/каталога/устройства, и прав отдельных пользователей (и групп) по отношению к данному файлу/каталогу/устройству для совершения различных действий.
Вот что по этому поводу "думает" QtFile: http://doc.qt.nokia.com/4.7/qfile.html#Permission-enum

Имхо, "с помощью Qt" можно пробовать "лочить" так: проверять текущие права на файл /QFile::permissions ()/, а затем уже пробовать задавать нужные права на файл /QFile::setPermissions/.

Скользкое дело, короче.