crossplatform.ru

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

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> не могу открыть файл
AD
  опции профиля:
сообщение 25.3.2009, 13:28
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Если не совпадет, тогда можно поступить так:
выбрать каталог, который есть на любой машине (либо каталог временных файлов, либо каталог "моих документов"), перенести туда help.xml и написать следующим образом:
QString name_file(QDir::homePath() + QDir::separator() + QString("help.xml"));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FladeX
  опции профиля:
сообщение 25.3.2009, 13:33
Сообщение #12


Студент
*

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

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




Репутация:   0  


Цитата(AD @ 25.3.2009, 13:23) *
Цитата(FladeX @ 25.3.2009, 13:19) *
Они и лежат в одном каталоге. А полный путь прописывать даже не знаю как - программа используется на разных компах с разными ОС, установщика нету, поэтому путь может быть абсолютно любым.

Попробуйте так:
QString name_file(QDir::currentPath() + QDir::separator() + QString("help.xml"));

Проверьте в дебаге, что в данной строке выводится корректный путь к файлу.

QDir::currentPath() почему-то определился как /home/opensuse/Documents
В программе не менял нигде это значение. Более того, использую графические файлы, которые лежат в той же директории - и все нормально. Только их явно указывал в .qrc

Сейчас остальное проверю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.3.2009, 13:45
Сообщение #13


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

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

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




Репутация:   94  


Цитата(FladeX @ 25.3.2009, 16:33) *
Более того, использую графические файлы, которые лежат в той же директории - и все нормально. Только их явно указывал в .qrc
они вкомпилены в бинарь, коль уж ты из в ресурсы засунул.

Цитата(FladeX @ 25.3.2009, 16:33) *
Сейчас остальное проверю.
проверь по сообщению №10
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 25.3.2009, 13:50
Сообщение #14


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(Litkevich Yuriy)
]проверь по сообщению №10

Проверяй обоими способами! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FladeX
  опции профиля:
сообщение 25.3.2009, 14:30
Сообщение #15


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 25.3.2009, 13:25) *
тест:
QDir tstDir("./");
   qDebug() << "Path \"./\" is:" << tstDir.absolutePath();
   qDebug() << "Real current path is:" << QDir::current();
   qDebug() << "File list:" << tstDir.entryList(QDir::Files);

Эээ.. а как это в баше сделать?

Цитата(AD @ 25.3.2009, 13:28) *
Если не совпадет, тогда можно поступить так:
выбрать каталог, который есть на любой машине (либо каталог временных файлов, либо каталог "моих документов"), перенести туда help.xml и написать следующим образом:
QString name_file(QDir::homePath() + QDir::separator() + QString("help.xml"));

Такой вариант не устраивает, теряется кроссплатформенность :unsure:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 25.3.2009, 14:34
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(FladeX @ 25.3.2009, 14:30) *
Такой вариант не устраивает, теряется кроссплатформенность :unsure:

Почему? Разве homepath нет в Linux, Unix, MacOS? Я не видел, чтобы в ассистенте говорилось, что функция применима только в Windows!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FladeX
  опции профиля:
сообщение 25.3.2009, 14:37
Сообщение #17


Студент
*

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

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




Репутация:   0  


homepath() разный будет в разных ОС. И копировать придется в строго определенную папку. Единственный способ сохранить после этого юзабельность - делать инсталлер. А мне рано этим заниматься)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.3.2009, 14:54
Сообщение #18


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

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

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




Репутация:   94  


Цитата(FladeX @ 25.3.2009, 17:30) *
Эээ.. а как это в баше сделать?
а причём здесь Bash?
ты это в свою программу вставь, сразу перед строчкой открытия твоего XML'ьника. И запусти программу из консоли, увидишь вывод.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 25.3.2009, 15:47
Сообщение #19


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(FladeX @ 25.3.2009, 14:37) *
homepath() разный будет в разных ОС. И копировать придется в строго определенную папку. Единственный способ сохранить после этого юзабельность - делать инсталлер. А мне рано этим заниматься)

Тогда такой вариант: в функции main есть параметр: char *argv[]. argv[0] - это абсолютное имя исполняемого файла (имя файла вырезать из строки). Запомнить этот путь в какую-нибудь глобальную переменную и использовать!

Сообщение отредактировал AD - 25.3.2009, 15:51
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.3.2009, 15:57
Сообщение #20


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

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

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




Репутация:   94  


Цитата(AD @ 25.3.2009, 18:47) *
Тогда такой вариант: в функции main есть параметр: char *argv[]. argv[0] - это абсолютное имя исполняемого файла (имя файла вырезать из строки). Запомнить этот путь в какую-нибудь глобальную переменную и использовать!
так проще:
qApp->applicationDirPath()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 10.11.2024, 0:20