Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: daimon от Мая 30, 2011, 00:06



Название: QFileSystemModel & QTreeView скрыть по фильтру файлы и и развернуть все папки...
Отправлено: daimon от Мая 30, 2011, 00:06
Как организовать один перевод программно в солюшине, собранный из 11 переводов проектов? Самый просто вариант создать новый перевод и туда всунуть содержимое переводов 12 проектов копи-пастом. Как обойтись более разумным способом? (VS2008)



Название: Re: Один перевод для солюшина из 12 проектов
Отправлено: serega-5508 от Мая 30, 2011, 01:22
врятли это возможно! Каждый проект должен содержать свой файл перевода, иначе он не будет знать, где его искать и читать, как я думаю!


Название: Re: Один перевод для солюшина из 12 проектов
Отправлено: Fess от Мая 30, 2011, 04:42
lrelease [options] ts-files [-qm qm-file]
Собирает все ваши 100500 файлов с исходниками перевода в один бинарник.


Название: Re: Один перевод для солюшина из 12 проектов
Отправлено: daimon от Мая 30, 2011, 13:47
врятли это возможно! Каждый проект должен содержать свой файл перевода, иначе он не будет знать, где его искать и читать, как я думаю!
каждый проект и содержит свой перевод


Название: Re: Один перевод для солюшина из 12 проектов
Отправлено: daimon от Мая 30, 2011, 14:03

решил сделать проект на Qt, использующий процессы


Код
C++ (Qt)
QStringList list = imageSpace(path, QStringList()<<"*.h"<<"*.cpp");
 
QString program = QDir(getenv("QTDIR")).absolutePath()+"/bin/lupdate.exe";
 
QStringList arguments;
arguments << list <<"-ts"<<"dima.ts";
 
QProcess *myProcess = new QProcess(0);
myProcess->start(program, arguments);
 
 
вот упращенная версия
 
 imageSpace - список все файлов с полными путями - тоже функцию склепал

проблемма с
Цитировать
if(!dir.exists())
 {
     emit isErrorDir(true);
   return QStringList();
}

QDir не понимает русские строки, если передаю так

Цитировать
CTranslateUtilRun util("C:/Documents and Settings/Dima/Рабочий стол/GraphBuilderNew/", "fddfdf", ETU_LUPDATE);

Как решить?


Название: Re: 1 перевод для солюш из 12 проектов - программа с процессом lupdate lrelease
Отправлено: daimon от Мая 31, 2011, 02:50
Как открыть explorer на определённой папке с помощью Qt?


Название: Re: 1 перевод для солюш из 12 проектов - программа с процессом lupdate lrelease
Отправлено: Fess от Мая 31, 2011, 04:51
QProcess().start("explorer.exe C:\\temp");
Насчет русских символов - проблема не в QDir, а в кодировке строки в исходниках и ее корректном считывании. Тема обсуждалась много раз поищите по форуму.
Лучше в исходниках использовать только латиницу..


Название: Re: 1 перевод для солюш из 12 проектов - программа с процессом lupdate lrelease
Отправлено: daimon от Мая 31, 2011, 14:41
QProcess().start("explorer.exe C:\\temp");
Насчет русских символов - проблема не в QDir, а в кодировке строки в исходниках и ее корректном считывании. Тема обсуждалась много раз поищите по форуму.
Лучше в исходниках использовать только латиницу..
самое верное решение
Код:
	ShellExecute(NULL, L"explore", (QFileInfo(m_translateUtilRun.getNameFile()).absoluteDir().absolutePath()).toStdWString().c_str(), NULL, NULL, SW_SHOWNORMAL);


Название: Re: 1 перевод для солюш из 12 проектов - программа с процессом lupdate lrelease
Отправлено: daimon от Мая 31, 2011, 15:27
Как в QFileSystemModel и QTreeModel запретить вообще показывать по фильтру файлы  и не показывать папки где нет файлов по фильтру, и ещё как открыть все папки сразу (плюсы все "включены") именно те, в которых есть файлы по фильтру? (я только смог файлы не по фильтру сделать не активными (серыми))

Код
C++ (Qt)
model->setRootPath(m_translateUtilRun.getPath());
 
switch (m_translateUtilRun.getTranslateUtil())
{
case ETU_LUPDATE:
model->setNameFilters(m_translateUtilRun.getFilterNamesLupdate());
 
break;
case ETU_LRELEASE:
model->setNameFilters(m_translateUtilRun.getFilterNamesLrelease());
 
break;
default: break;
}
ui.treeView->setModel(model);
ui.treeView->setRootIndex(model->index(m_translateUtilRun.getPath()));