Версия для печати темы
Форум на CrossPlatform.RU _ Qt Общие вопросы _ linux, QSettings
Автор: 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.
Автор: Litkevich Yuriy 13.3.2010, 18:41
Цитата(breeve @ 13.3.2010, 20:43)
Непонятно NewName это название файла
да
Автор: breeve 13.3.2010, 18:44
вопрос был поставлен немного не правильно..)) смотрите выше
Автор: Litkevich Yuriy 13.3.2010, 18:48
Цитата(breeve @ 13.3.2010, 20:43)
Как программно узнать имя пользователя?
можно сразу посмотреть QDesktopServices::HomeLocation
Цитата(breeve @ 13.3.2010, 20:43)
И еще вопрос что за параметр такое Scope?
область видимости. Пользовательская/системная
Автор: breeve 13.3.2010, 18:49
Цитата(Litkevich Yuriy @ 13.3.2010, 18:48)
область видимости. Пользовательская/системная
А разница между ними?
И еще вопрос в документации написано что по умолчанию в Unix стоит такая-то директория(выше писал).. Это значит что ее можно изменить. Каким же образом?
Автор: Litkevich Yuriy 13.3.2010, 18:51
Цитата(breeve @ 13.3.2010, 20:43)
QSettings *set = new QSettings
...
delete set;
вот в этом вообще нет ни какой нужды (создать динамически переменную и почти сразу её прибить). Объявляй переменную на стеке, она будет удалена сразу по выходу из области видимости.
Цитата(breeve @ 13.3.2010, 21:49)
А разница между ними?
в асистенте написано
Автор: breeve 13.3.2010, 18:55
Цитата(Litkevich Yuriy @ 13.3.2010, 18:51)
вот в этом вообще нет ни какой нужды (создать динамически переменную и почти сразу её прибить). Объявляй переменную на стеке, она будет удалена сразу по выходу из области видимости.
Как я понял когда объявляешь QSettings создается файл.. Мне главное чтобы файл создался в определенной папке, и мне неважно убивается переменная или нет. Главный вопрос в том что файл не создается.
Нашел я файл. все прекрасно создается..
Автор: Litkevich Yuriy 13.3.2010, 19:09
Цитата(breeve @ 13.3.2010, 21:55)
Главный вопрос в том что файл не создается
чтобы создавать настройку (файл/запись в реестре виндовоза) в системной области видимости, нужно иметь особые привелегии (например администратор в виндовозе)
при наличии консоли, Qt тебе в неё напишет сообщение о неудачной записи
Автор: breeve 13.3.2010, 19:17
еще вопрос.
Можно ли сделать чтобы при создании файла, не подставлялся формат файла?
Я на самом деле занимаюсь глупостью.. В 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. Можно ли это как-нибудь исправить?
Автор: Litkevich Yuriy 13.3.2010, 19:19
Цитата(breeve @ 13.3.2010, 22:17)
не подставлялся формат файла?
не понял
Автор: breeve 13.3.2010, 19:27
Цитата(Litkevich Yuriy @ 13.3.2010, 19:19)
не понял
Выше написал
Автор: Litkevich Yuriy 13.3.2010, 19:34
Цитата(breeve @ 13.3.2010, 22:27)
Выше написал
а ты не пиши выше. Сообщение написано, редактируй только если опечатки есть
Используй не родной формат, а INI-формат. Там можно конкретное имя файла задать
Автор: breeve 13.3.2010, 19:52
Цитата(Litkevich Yuriy @ 13.3.2010, 19:34)
а ты не пиши выше. Сообщение написано, редактируй только если опечатки есть
Используй не родной формат, а INI-формат. Там можно конкретное имя файла задать
сделап вот так:
QSettings *set = new QSettings(
QSettings::IniFormat,
QSettings::UserScope,
"autostart/myCitation.desktop"
);
создает файл ..ion.desktop.ini
Автор: Litkevich Yuriy 13.3.2010, 20:07
вот конструктор:
QSettings ( const QString & fileName, Format format, QObject * parent = 0 )
Автор: breeve 13.3.2010, 21:24
Нашел функцию регистрации формата. И в ней пример:
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 14.3.2010, 1:13
не стал создавать форматы.. просто записал файл. вопрос снят
Автор: maint 14.3.2010, 8:59
Цитата(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
а какой у тебя рабочий то вариант получился? тут так и не дошли до рабочего варианта.
Вот у меня запускается прога
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
eldar85, рабочий вариант в примерах про главное окно и настройки
Цитата(breeve @ 13.3.2010, 21:43)
$HOME/.config/MySoft/Star Runner.conf"
Цитата(breeve @ 13.3.2010, 21:43)
QSettings::SystemScope,
хочу писать в $HOME, а вкоде усиленно пишу в SystemScope.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)