crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
breeve
  опции профиля:
сообщение 13.3.2010, 17:43
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Как записать файл в папку .конфиг?
Делаю вроде как по инструкции, не получается. Единственное что у меня получилось так это записать в директорию где лежит программа.
В документации нашел это:
"On Unix systems, if the file format is NativeFormat, the following files are used by default:
$HOME/.config/MySoft/Star Runner.conf"
не хочет писать..

вот код:
 QSettings *set = new QSettings(
            QSettings::NativeFormat,
            QSettings::SystemScope,
            "breeveSoft",
            "myCitation"
            );
    set->beginGroup("Desktop Entry");
    set->setValue("Desktop Entry/Type", "Application");
    set->sync();
    delete set;

И еще вопрос что за параметр такое Scope?
Ос Ubuntu 9.10.

Сообщение отредактировал breeve - 13.3.2010, 18:43
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2010, 18:41
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(breeve @ 13.3.2010, 20:43) *
Непонятно NewName это название файла
да
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 13.3.2010, 18:44
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


вопрос был поставлен немного не правильно..)) смотрите выше

Сообщение отредактировал breeve - 13.3.2010, 18:46
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2010, 18:48
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(breeve @ 13.3.2010, 20:43) *
Как программно узнать имя пользователя?
можно сразу посмотреть QDesktopServices::HomeLocation

Цитата(breeve @ 13.3.2010, 20:43) *
И еще вопрос что за параметр такое Scope?
область видимости. Пользовательская/системная
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 13.3.2010, 18:49
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Цитата(Litkevich Yuriy @ 13.3.2010, 18:48) *
область видимости. Пользовательская/системная

А разница между ними?
И еще вопрос в документации написано что по умолчанию в Unix стоит такая-то директория(выше писал).. Это значит что ее можно изменить. Каким же образом?

Сообщение отредактировал breeve - 13.3.2010, 18:51
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2010, 18:51
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(breeve @ 13.3.2010, 20:43) *
QSettings *set = new QSettings
...
delete set;
вот в этом вообще нет ни какой нужды (создать динамически переменную и почти сразу её прибить). Объявляй переменную на стеке, она будет удалена сразу по выходу из области видимости.

Цитата(breeve @ 13.3.2010, 21:49) *
А разница между ними?
в асистенте написано
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 13.3.2010, 18:55
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Цитата(Litkevich Yuriy @ 13.3.2010, 18:51) *
вот в этом вообще нет ни какой нужды (создать динамически переменную и почти сразу её прибить). Объявляй переменную на стеке, она будет удалена сразу по выходу из области видимости.

Как я понял когда объявляешь QSettings создается файл.. Мне главное чтобы файл создался в определенной папке, и мне неважно убивается переменная или нет. Главный вопрос в том что файл не создается.

Нашел я файл. все прекрасно создается..

Сообщение отредактировал breeve - 13.3.2010, 19:15
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2010, 19:09
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(breeve @ 13.3.2010, 21:55) *
Главный вопрос в том что файл не создается
чтобы создавать настройку (файл/запись в реестре виндовоза) в системной области видимости, нужно иметь особые привелегии (например администратор в виндовозе)

при наличии консоли, Qt тебе в неё напишет сообщение о неудачной записи
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 13.3.2010, 19:17
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


еще вопрос.
Можно ли сделать чтобы при создании файла, не подставлялся формат файла?
Я на самом деле занимаюсь глупостью.. В ubunt'e есть такая служба стандартная "Запускаемые приложения". Так вот если кто не знает, с ее помощью можно добавлять программы в автозагрузку. После добавления она добавляет файл в директорию .config/autostart/nameOfProgram.desktop со следующим содержимым:
[Desktop Entry]
Type=Application
Exec=/*директория программы*/
Hidden=false
X-GNOME-Autostart-enabled=true
Name[ru_RU]=myCitation
Name=myCitation
Comment[ru_RU]=
Comment=

Пытаюсь создать такой файл в ручную. Проблема в том что при создании автоматом подставляется формат .conf или .ini. Можно ли это как-нибудь исправить?

Сообщение отредактировал breeve - 13.3.2010, 19:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2010, 19:19
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(breeve @ 13.3.2010, 22:17) *
не подставлялся формат файла?
не понял
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 13.3.2010, 19:27
Сообщение #11


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Цитата(Litkevich Yuriy @ 13.3.2010, 19:19) *
не понял

Выше написал
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2010, 19:34
Сообщение #12


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(breeve @ 13.3.2010, 22:27) *
Выше написал
а ты не пиши выше. Сообщение написано, редактируй только если опечатки есть

Используй не родной формат, а INI-формат. Там можно конкретное имя файла задать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 13.3.2010, 19:52
Сообщение #13


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Цитата(Litkevich Yuriy @ 13.3.2010, 19:34) *
а ты не пиши выше. Сообщение написано, редактируй только если опечатки есть

Используй не родной формат, а INI-формат. Там можно конкретное имя файла задать
сделап вот так:
    QSettings *set = new QSettings(
            QSettings::IniFormat,
            QSettings::UserScope,
            "autostart/myCitation.desktop"
            );
создает файл ..ion.desktop.ini

Сообщение отредактировал breeve - 13.3.2010, 19:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2010, 20:07
Сообщение #14


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


вот конструктор:
QSettings ( const QString & fileName, Format format, QObject * parent = 0 )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 13.3.2010, 21:24
Сообщение #15


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Нашел функцию регистрации формата. И в ней пример:
bool readXmlFile(QIODevice &device, QSettings::SettingsMap &map);
 bool writeXmlFile(QIODevice &device, const QSettings::SettingsMap &map);

 int main(int argc, char *argv[])
 {
     const QSettings::Format XmlFormat =
             QSettings::registerFormat("xml", readXmlFile, writeXmlFile);

     QSettings settings(XmlFormat, QSettings::UserSettings, "MySoft",
                        "Star Runner");

     ...
 }

Не понимаю первые две строчки. Как вставить стандартные Qt'шные функции открытия и записи файла? т.е чтобы этот новый формат открывался как обычный текстовый документ.

Сообщение отредактировал breeve - 13.3.2010, 21:32
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 14.3.2010, 1:13
Сообщение #16


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


не стал создавать форматы.. просто записал файл. вопрос снят
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 14.3.2010, 8:59
Сообщение #17


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(breeve @ 13.3.2010, 17:43) *
Как записать файл в папку .конфиг?
Делаю вроде как по инструкции, не получается. Единственное что у меня получилось так это записать в директорию где лежит программа.
В документации нашел это:
"On Unix systems, if the file format is NativeFormat, the following files are used by default:
$HOME/.config/MySoft/Star Runner.conf"
не хочет писать..

вот код:
 QSettings *set = new QSettings(
            QSettings::NativeFormat,
            QSettings::SystemScope,
            "breeveSoft",
            "myCitation"
            );
    set->beginGroup("Desktop Entry");
    set->setValue("Desktop Entry/Type", "Application");
    set->sync();
    delete set;

И еще вопрос что за параметр такое Scope?
Ос Ubuntu 9.10.

1. $HOME - это переменная среды (shell). Сначала надо определить домашний каталог
2. Проверить есть ли каталог в .config MySoft и ежели чего создать
3. А Scope, судя по документации, где ентот конфиг находится будет. Только для одного пользователя или как системный
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 5.9.2010, 14:32
Сообщение #18


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


а какой у тебя рабочий то вариант получился? тут так и не дошли до рабочего варианта.
Вот у меня запускается прога
MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->textEdit_2->setAcceptRichText(false);
    ui->textEdit->setAcceptRichText(false);
    readSettings();
}

куда что вписывать то?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.9.2010, 18:27
Сообщение #19


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


eldar85, рабочий вариант в примерах про главное окно и настройки


Цитата(breeve @ 13.3.2010, 21:43) *
$HOME/.config/MySoft/Star Runner.conf"
Цитата(breeve @ 13.3.2010, 21:43) *
QSettings::SystemScope,
хочу писать в $HOME, а вкоде усиленно пишу в SystemScope.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 13.4.2025, 22:15