Здравствуйте, гость ( Вход | Регистрация )
| Kagami | Дата 13.4.2009, 18:59 |
| Если бы я заметил что в середине обсуждения у тебя поменялся xml-файл все решилось бы быстрее |
|
| Litkevich Yuriy | Дата 13.4.2009, 15:14 |
Отдельное спасибо Kagami за помощь кни ему "Спасибу" |
|
| FladeX | Дата 13.4.2009, 14:15 |
| Возвращает int. Но я уже решил проблему: Вместо этого: прописал старое: и все заработало! Отдельное спасибо Kagami за помощь |
|
| Kagami | Дата 10.4.2009, 18:25 |
| А какие значение возвращает currentId() ? | |
| FladeX | Дата 10.4.2009, 15:00 |
| Не совсем понял, какую переменную мы создаем в условии... Перенес из цикла все что только можно было вынести - результат тот же (пустое модальное окно). Перенес вызов QMessageBox внутрь цикла - модальное окно вообще перестало вызываться. |
|
| Kagami | Дата 9.4.2009, 13:25 |
| Из-за области видимости переменной. Если ее создавать в условии, то в его конце она будет удалена | |
| FladeX | Дата 9.4.2009, 11:46 |
| Спасибо за развернутый ответ! Теперь понятнее стало. Однако, погоняв эту функцию, заметил, что условие всегда ложно. То есть если внутри этого условия задавать переменную message, то в программе ничего не будет выведено, так как этот участок кода никогда не отработает. А если задавать message вне условной конструкции, то все ок. Почему же так происходит? Может условие не совсем корректное? |
|
| Kagami | Дата 8.4.2009, 21:59 |
| Посидел десять минут, но раскусил этот орешек: Раскрывающийся текст void ExpertSystem::showHelp() { static QString lastHelpMessage; QString message; QDomDocument doc; QFile file("/home/opensuse/qt/expertsystem/help.xml"); if (!file.exists()) { QMessageBox::warning(this, QObject::trUtf8("Предупреждение"), QObject::trUtf8("Ошибка 001. Файл help.xml не существует")); } if (!file.open(QIODevice::ReadOnly)) { QMessageBox::warning(this, QObject::trUtf8("Предупреждение"), QObject::trUtf8("Ошибка 002. Невозможно открыть файл help.xml")); return; } if (!doc.setContent(&file)) { QMessageBox::warning(this, QObject::trUtf8("Предупреждение"), QObject::trUtf8("Ошибка 003. Невозможно прочитать файл help.xml")); file.close(); return; } //Второй раз устанавливать содержимое не надо // В результате получим pageid равное числу... QString pageid = "page" + QString("%1").arg(1, 2, 10, QChar('0')); //Вот нафига заводить еще один документ? Если мы уже все загрузили в doc QDomElement root = domDocument.documentElement(); QDomElement root = doc.documentElement(); //help у нас корневой элемент и уже содержится в root. Второй раз его искать не надо //С учетом вышесказанного эта строка не правильная QDomElement child = root.firstChildElement("page"); while (!child.isNull()) { if (child.attribute("id") == pageid) { QDomElement mess = child.firstChildElement("message"); message = mess.text(); //message = pageid; } child = child.nextSiblingElement("page"); } file.close(); //if (lastHelpMessage == message) // message = tr(""); QMessageBox::information(this, QObject::trUtf8("Подсказка"), message); lastHelpMessage = message; } P.S. Жалко что нельзя раскрашивать код, только так |
|
| FladeX | Дата 8.4.2009, 11:59 |
| Вот функция целиком: cpp |
|
| Kagami | Дата 7.4.2009, 17:19 |
| В приведенном выше кусочке вроде ошибок не видно. Было бы неплохо глянуть на весь код этой процедуры | |
| Просмотр темы полностью (откроется в новом окне) | |
|
Текстовая версия | Сейчас: 18.1.2026, 22:13 |