Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Открытие файла Xml для записи!
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
rezor
Не пойму в чем проблема почему выпадает в консоли такая ошибка.
Запускается /home/stas/www/www...
QMetaObject::connectSlotsByName: No matching signal for on_tabWidget_currentChanged(QWidget*)
QFile::open: File (BDwww.xml) already open
Error open file
/home/stas/www/www завершился с кодом 0

Хотя файл открываю вроде правильно
// Запись в xml фаил
void MainWindow::addCategoryInXML()
{
QDomDocument doc;
QFile file("BDwww.xml");
doc.setContent(&file);
QDomElement root,categoryNum,categoryName;
QDomText categoryNameText;
if(file.open(QIODevice::WriteOnly | QIODevice::Text))
{

     root=doc.documentElement();// получаем корень документа
     categoryNum=doc.createElement("category");//создаем потомка
     categoryName=doc.createElement("name_category");
     categoryNameText = doc.createTextNode("Errare humanum est");
     root.appendChild(categoryNum);
     categoryNum.appendChild(categoryName);
     categoryName.appendChild(categoryNameText);

     QTextStream out(&file);
     doc.save(out,4);
     file.close();

}
else    qDebug()<<"Error open file";

}
Алексей1153
Цитата
already open

тут копать, по любому ))

В отладчике определить, на какой строке спотыкается, понять, почему повторное открытие файла. Или файл ещё кем-то эксклюзивно открыт
Litkevich Yuriy
Цитата(Алексей1153 @ 3.8.2010, 22:32) *
Или файл ещё кем-то эксклюзивно открыт
ошибка была бы другая.

Где-то он уже открыл файл. Возможно, попользовался и не закрыл.
rezor
Ну программно больше ни где не открывал!

Возможно причина в том что я добавил этот файл в список ресурсов проекта
Litkevich Yuriy
Цитата(rezor @ 3.8.2010, 23:02) *
Возможно причина в том что я добавил этот файл в список ресурсов проекта
???
rezor
Нет проблема осталась, хотя файл не открываю больше ни где!
Алексей1153
rezor, найди в коде все открытия и сделай счётчик этих открытий. Будет ли он >1
rezor
В коде пока что только это открытие!

пробовал заменять файл на другой тоже самое выдает!
Алексей1153
а вот так открывается?

QDomDocument doc;
QFile file("BDwww.xml");
//  doc.setContent(&file);
//  QDomElement root,categoryNum,categoryName;
//  QDomText categoryNameText;
if(file.open(QIODevice::WriteOnly | QIODevice::Text))
{
rezor
Да так открывает,суть была в том что вызывал doc.setContent(&file); до file.open() .
Только теперь при открытии файл пустой становится.
Запускается /home/stas/www/www...
QMetaObject::connectSlotsByName: No matching signal for on_tabWidget_currentChanged(QWidget*)
QIODevice::read: WriteOnly device
Calling appendChild() on a null node does nothing.
/home/stas/www/www завершился с кодом 0

void MainWindow::addCategoryInXML()
{

QFile file("BDwww.xml");
QDomDocument doc;
QDomElement root,categoryNum,categoryName;
QDomText categoryNameText;
if(file.open(QIODevice::WriteOnly | QIODevice::Text))
{    
    doc.setContent(&file);
  root=doc.documentElement();// получаем корень документа
    categoryNum=doc.createElement("category");//создаем потомка
    categoryName=doc.createElement("name_category");
    categoryNameText = doc.createTextNode("Errare humanum est");
    root.appendChild(categoryNum);
    categoryNum.appendChild(categoryName);
   categoryName.appendChild(categoryNameText);

    QTextStream out(&file);
    doc.save(out,4);
    file.close();


}
else qDebug()<<"Error open file";

}


если убрать doc.setContent(&file); то остается только
Calling appendChild() on a null node does nothing.
/home/stas/www/www завершился с кодом 0


xml
<?xml version="1.0"?>
<bdWWW>
<category number= "1">
<name_category>Почта</name_category>
<link number ="1">
<string_www>http:\\www.mail.ru></string_www>
<description>Почта</description>
<tags>Почта,mail</tags>
</link>
</category>
</bdWWW>
Алексей1153
Цитата(rezor @ 4.8.2010, 12:48) *
Только теперь при открытии файл пустой становится.

прямо после выполнения open - смотришь файл, а он опустел ? Или всё же позднее ? :)
rezor
сразу после open

сразу после open

Поменял на QIODevice::ReadWrite теперь фаил не теряет информацию, но по прежнему остается
Calling appendChild() on a null node does nothing.
/home/stas/www/www завершился с кодом 0


Все решено спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.