Russian Qt Forum
Май 04, 2024, 01:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: QtCreator + Boost  (Прочитано 21679 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #15 : Август 01, 2011, 16:15 »

т.е. указать просто папку нельзя?
нет. неужели так сложно к папке приплюсовать слеш и имя файла? Улыбающийся
Кстати, вопрос такой. Как QRegExp::cap() узнает какую стрингу ему надо парсить, или предварительно обязал надо юзать QRegExp::indexIn()? Нет ли какой то setText или перегруженный cap с аргументом стринга?
QRegExp::cap() только возвращает захваченную подстроку (с параметром 0 - полное совпадение), а непосредственно поиск выполняется в QRegExp::indexIn() (или QRegExp::lastIndexIn() или QRegExp::exactMatch()).

и тут тоже пытаешься сэкономить на строчке? Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Lagovas
Гость
« Ответ #16 : Август 01, 2011, 17:10 »

Нет, просто для меня это было не явно. Я привык в других языках поиск типа search, findall и т.п. Где ты сам конкретно указываешь паттерн, строку источник. Потом тип match групируешь в строку в переменную какую надо. А тут indexIn, сразу на ум приходить что он просто находит номер позиции первого совпадения. Ясно, спасибо. Сейчас буду пробовать.
Кстати, ты пробовал USERPROFILE найти своим регекспом? находило? сейчас попробую.
И еще, как на счет прав доступа? сталкивался? Уже надоела эта трабла. Вроде права есть, а оно не может записать, считать или подобное. Хотя в Qt пробовал записать, потом считать QFile::error(), он отдавал 0.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #17 : Август 01, 2011, 17:50 »

1. для того, чтоб не "на ум приходило", надо читать документацию
2. регэксп не запускал, но должен работать
3. может ты там тоже только папку указывал без имени файла? нерабочий код в студию.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Lagovas
Гость
« Ответ #18 : Август 01, 2011, 18:21 »

Код:
void NarutoMove::on_submitButton_clicked()
{
    logTextEdit->append("Copying start");
    QString name;
    QString numChapter;
    if(!dirFrom.isEmpty())
    {
        QDir d(dirFrom);
        logTextEdit->append(dirFrom);
        numChapter=getChapterNumber(d.dirName());
        logTextEdit->append(numChapter);
        QStringList sl = d.entryList(QDir::Files);
        logTextEdit->append("d.entryList");
        foreach(name,sl)
        {
            logTextEdit->append("Start foreach");
            if (!name.startsWith("Credit"))//что бы копировать только главы
            {
                name="\\"+name;
                QFile f(dirFrom+name);
                f.copy(dirTo+name);
                logTextEdit->append(f.errorString());
                logTextEdit->append(QString("copied %1 to %2").arg(dirFrom+name,dirTo+name));
            }
        }
    }
}
dirFrom и dirTo получаю с помощью QFileDialog::getExistingDirectory
Пишет Unknown error.
« Последнее редактирование: Август 01, 2011, 18:26 от Lagovas » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Август 01, 2011, 19:02 »

Попробуйте так
Код
C++ (Qt)
...          
if (name.startsWith("Credit")) continue;
QFileInfo infoFrom(dirFrom, name);
QFileInfo infoTo(dirTo, name);
QFile::copy(infoFrom.absoluteFilePath(), infoTo.absoluteFilePath());
...
}
 
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #20 : Август 01, 2011, 19:06 »

обычно временную переменную объявляют прямо в foreach:
Код
C++ (Qt)
foreach(QString name,sl)
может быть проблема в обратном слеше (я говорил пару постов назад, что в Qt можно везде использовать прямой слеш)

QFile::copy() (обе ее версии) возвращает bool - по этому можно определить успешной ли была операция, тогда и считывать errorString()
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Lagovas
Гость
« Ответ #21 : Август 01, 2011, 19:28 »

Код:
foreach(name,sl)
        {
            logTextEdit->append("Start foreach");
            if (!name.startsWith("Credit"))//что бы копировать только главы
            {
                //name="/"+name;
//                QFile f(dirFrom+name);
//                f.copy(dirTo+name)? logTextEdit->append(QString("copied %1 to %2").arg(dirFrom+name,dirTo+name)):
//                                    logTextEdit->append(f.errorString());

                QFileInfo infoFrom(dirFrom, name);
                QFileInfo infoTo(dirTo, name);
                QFile::copy(infoFrom.absoluteFilePath(), infoTo.absoluteFilePath())? logTextEdit->append(QString("copied %1 to %2").arg(dirFrom+name,dirTo+name)):
                    logTextEdit->append("error");;
            }
Всеравно ошибка, по разному пробовал. Вот скрин доступа к папке.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #22 : Август 01, 2011, 19:56 »

что ли скинь проект и файлы - проверим
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Lagovas
Гость
« Ответ #23 : Август 01, 2011, 20:00 »

http://floomby.ru/content/fwlyjjf602/

Кстати по поводу QString name, я его не обьявляю в foreach, ибо функция не дописана, и он еще будет юзатся в случае !dirFrom. Потому отдельно обьявил. Кстати, там еще жалуется на сигнал, заодно по нему подскажите плз))

П.С. А можно ли как то узнавать чей textChanged вызвался? Просто мне надо знать как поступить, в зависимости от текста двух LineEdit. И было бы меньше проверок, если бы я знал чей textChanged сделал сигнал? Просто интересно. Только учу куте, и возможно такое существует.
« Последнее редактирование: Август 01, 2011, 20:25 от Lagovas » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #24 : Август 01, 2011, 20:29 »

эх, буст у меня не установлен Улыбающийся но я убрал его и заменил на QRegExp.

если пишешь в исходниках русские буквы (будь то комментарии или строки для программы), то уж сохраняй файл в UTF-8 хотя бы.

под "файлами" я имел в виду тестовые файлы (книга или что там у тебя).

я даже собрать не могу без ошибок. такое впечатление, будто ты забыл приложить файл формы, который лежит у тебя не в папке приложения, а возле нее (судя по записи в .pro файле и отсутствии нужных переменных в имеющемся .ui файле).
Цитировать
П.С. А можно ли как то узнавать чей textChanged вызвался? Просто мне надо знать как поступить, в зависимости от текста двух LineEdit. И было бы меньше проверок, если бы я знал чей textChanged сделал сигнал? Просто интересно. Только учу куте, и возможно такое существует.
метод sender().
Код
C++ (Qt)
QLineEdit *lineEdit = qobject_cast<QLineEdit *>(sender());
if (lineEdit)
{
   // сравниваешь lineEdit с имеющимися
}
 
« Последнее редактирование: Август 01, 2011, 20:31 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Lagovas
Гость
« Ответ #25 : Август 01, 2011, 20:35 »

Прошу прощения, реально не тот уи файл. http://floomby.ru/content/c3R1hksTkq/ - вот. Прост гуи делал в дизайнере, а сохраняю, а потом проект уже делал. Потом в разных папках было. По поводу УТФ, сейчас же сделаю. Еще не настроил Креатор.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #26 : Август 01, 2011, 21:36 »

про ошибки при копировании - у тебя слот on_submitButton_clicked() вызывается 2 раза подряд при нажатии на кнопку, потому что один раз он был автоматически присоединен, а второй - ты явно соединяешь в конструкторе. так вот в логе видно, что один раз все замечательно копируется, а второй - сыпятся ошибки, потому что на месте назначения уже присутствуют файлы, а QFile::copy() копирует только если файла с таким же именем не существует. закомментируй connect(submitButton,SIGNAL(clicked()),this,SLOT(on_submitButton_clicked())); и все будет нормально.

про ошибку сигнала - поскольку твой слот начинается с "on_", то QObject пытается автоматически соединить сигнал с этим слотом (on_<sendername>_<signalname>()), но не находит нужного сигнала.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Lagovas
Гость
« Ответ #27 : Август 01, 2011, 21:51 »

Всем огромнейшее спасибо за принятие участия в помощи моей траблы, понял в чем фигня, когда начал выводить пути. Я обычно путь вручную указывал, но не сделал сигнал textChanged, что бы присваивало dirTo значение. Плюс указанная по умолчанию папка обычно не существует, а потому ее надо создавать. Отсюда и эррор.

И все же интересно, можно ли стандартными средствами узнать какой обьект послал сигнал? Например обьект сигнала textChanged? Что бы точнее вносить изменения. Например в C# делегаты обычно типа (Object sender, EventArgs arg), и всегда можно работать с обьектом, на который подписан метод. А так всем спс)

Закоментировал, но варн на слот есть "QMetaObject::connectSlotsByName: No matching signal for on_dirToFromChanged(QString)"

П.С. kambala - вопрос к тебе личный, ты просматривал мой код, как тебе в общем? На что обратить внимание? Как оформление? Какие советы? Заранее благодарен.


П.С. еще вопросик, как можно вызывать другие исполнительные файлы или юзать консоль системы(или как там называется это)? Нужно например разархивировать. Думаю юзать rar.exe, консольный архиватор от Winrar. В питоне юзал типа os.system("console commands"). Наверное можно создавать новый процесс и т.п., но не хочется с этим связываться, хочется юзнуть простой метод какой то.
« Последнее редактирование: Август 01, 2011, 22:34 от Lagovas » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #28 : Август 01, 2011, 22:46 »

И все же интересно, можно ли стандартными средствами узнать какой обьект послал сигнал? Например обьект сигнала textChanged? Что бы точнее вносить изменения. Например в C# делегаты обычно типа (Object sender, EventArgs arg), и всегда можно работать с обьектом, на который подписан метод. А так всем спс)
посмотри на мой предыдущий пост
Закоментировал, но варн на слот есть "QMetaObject::connectSlotsByName: No matching signal for on_dirToFromChanged(QString)"
переименуй слот (убери у него "on_")
П.С. kambala - вопрос к тебе личный, ты просматривал мой код, как тебе в общем? На что обратить внимание? Как оформление? Какие советы? Заранее благодарен.
не экономить на пробелах и не писать кириллицу в исходниках
П.С. еще вопросик, как можно вызывать другие исполнительные файлы или юзать консоль системы(или как там называется это)? Нужно например разархивировать. Думаю юзать rar.exe, консольный архиватор от Winrar. В питоне юзал типа os.system("console commands"). Наверное можно создавать новый процесс и т.п., но не хочется с этим связываться, хочется юзнуть простой метод какой то.
http://www.prog.org.ru/index.php?topic=18532.msg124702#msg124702
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Lagovas
Гость
« Ответ #29 : Август 01, 2011, 22:53 »

Еще раз спасибо. На пробелах... Разве економил?
По поводу кирилици, а если умеешь понимать общий смысл текста на англ, но неуверенно и грамматически неправильно пишешь на англ, как тогда? На инглише не проканает.
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.105 секунд. Запросов: 23.