crossplatform.ru

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


  Ответ в Не отображается rootNode при создании класс от QAbstractItemModel
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Гость_Delphist_* Дата 17.8.2008, 15:32
 
Цитата(Litkevich Yuriy @ 15.8.2008, 19:00) *
Теперь вопрос, откуда идея: "класс иерархической структуры - за счет использования QHash"?

Т.е. почему такой способ хранения данных? Откуда берутся данные?

В моем примере MyMonitor.zip (который здесь представлен) все подробно показано как заполняется класс иерархической структуры, затем показано как этот класс используется в моей модели, и мой вопрос звучал так: почему не отображается rootNoode, нормальный ответ должен звучать приблизина так Delphist у тебя там то там то есть ошибка, если же у меня все правильно, то сказать причину по которой не выводится rootNode. Вот и все. А заниматься демагогией можно бесконечно долго ток вопроса это не решает. Поэтому, большая просьба, давать ответы по сути, а не спрашивать "откуда идея: "класс иерархической структуры - за счет использования QHash", почему такой способ хранения. Так и хочется сказать по качену, но сдержусь и отвечу, есть проект который разрабатывал не я, есть тех. зад. которое диктует мне руководство, а я всего лишь программист, и должен писать в том фундаменте который был создан без меня. и класс указанный в my.cpp он уже существует очень давно, и менять QHash на QList из-за меня не будет. Вот так вот.
Litkevich Yuriy Дата 15.8.2008, 19:00
  вообщем как бы я начал делать твою прогу.
Сделал бы интерфейс, который компилится, но несодержит модели и следовательно данные.
1) Главный файл не содержит ничего лишнего, только стандартный набор (обычно его засовывают в клас унаследованый от QApplication, но пока так) + главный виджет программы
1.1) файл main.cpp
/*!
\file main.cpp
\brief Основной файл программы.
*/

#include <QApplication>
#include <QStyle>
#include <QStyleFactory>
#include <QTextCodec>
#include <QLocale>
#include <QTranslator>
#include <QDir>

#include "mymonitor.h"

int main(int argc, char *argv[])
{
//    Q_INIT_RESOURCE(mdi);

  QDir            dir_plugin;    // каталог плагинов
  QStyle        *pStyle;    // стиль ПО
  QString        locale;        // язык локали
  QTranslator    *qttr;        // переводчик программы
  QStringList     list_path;    // Список путей
  
    QApplication app(argc, argv);
    
    // Устанавливаем кодеки
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));// без этой кодировки с БД проблема
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); // Для функций перевода tr()
    
    // Устанавливаем свойства программы (понадобится для настроек)
    QCoreApplication::setOrganizationName(QObject::tr("ЗАО \"Тест\""));
    QCoreApplication::setApplicationName(QObject::tr("Тест модель"));
    
    // устанавливаем путь к плагинам (добавим каталог бинаря)
    dir_plugin = QDir(qApp->applicationDirPath()+"/plugins/");
    list_path << dir_plugin.absolutePath() << app.libraryPaths ();
    app.setLibraryPaths(list_path);
    
    // Устанавливаем стили
    pStyle = QStyleFactory::create("Plastique");//Cleanlooks Plastique windows windowsxp
    QApplication::setStyle(pStyle);
    app.setPalette(pStyle->standardPalette());
    
    // Устанавливаем превод библиотек Qt
    locale = QLocale::system().name();    // запрос языка (например: "ru")
    qttr = new QTranslator;
    qttr->load(QString("./qt_") + locale); // загрузка файла ./qt_*.qm
    app.installTranslator(qttr);         // устанока переводчика    
    
    // Главный виджет программы
    MyMonitor mainWin;
    mainWin.show();

    return app.exec();
}


2) Главный виджет
2.1) Файл mymonitor.ui Прикрепленный файл  mymonitor.zip ( 355 байт ) Кол-во скачиваний: 186

создан на основе QWidget, т.к. ты не использовал ничего из особенностей QMainWindow, и сможешь встроить его как обычный виджет в любую программу, по завершении тестов.
Имя главного класса: MyMonitor
Имя древовидного представления: view

2.2) На его основе создаю класс MyMonitor (два файла mymonitor.cpp/h) с монежественным наследованием, от QWidget и от того что в ui-файле
mymonitor.h
/*!
*    \file    mymonitor.h
*    \brief    Интерфейс класса "MyMonitor".
*/
#ifndef MYMONITOR_H
#define MYMONITOR_H

#include "ui_mymonitor.h"

/*!
*    \class MyMonitor
*    \brief Класс MyMonitor.
*
*     Этот класс является главным окном программы
*/
class MyMonitor : public QWidget, public Ui::MyMonitor
{
    Q_OBJECT

public:
    MyMonitor(QWidget *p_parent = 0);



};

#endif //MYMONITOR_H

mymonitor.cpp
/*!
*    \file    mymonitor.cpp
*    \brief    Реализация класса "MyMonitor".
*/

#include <QtGui>

#include "mymonitor.h"


MyMonitor::MyMonitor(QWidget* p_parent) : QWidget(p_parent)
{
    setupUi(this);

    setWindowTitle(tr("Тест модели-дерева"));
}

Все. Это должно компилится и к этому более не возвращаемся, вся прочая работа по подключению к модели ведется в конструкторе MyMonitor.

Далее мои действия были бы такими:
3) Продумывание способа хранения данных.
4) Создание модели
5) Подключение ее к представлению, как указано выше.

------
Теперь вопрос, откуда идея: "класс иерархической структуры - за счет использования QHash"?

Т.е. почему такой способ хранения данных? Откуда берутся данные?
Delphist Дата 15.8.2008, 11:20
 
Цитата(Litkevich Yuriy @ 15.8.2008, 6:33) *
Т.к. не всегда и не у всех есть желание или время подробно изучать код, расказывай подробности.
1) Lib\my.cpp(h)
2) main.cpp - тут понятно
3) mymodel.cpp(h)
4) mymonitor.cpp(h)
5) mymonitor.qrc
6) mymonitor.ui
7) sdmtest.cpp(h)

Вопросы по каждому пункту одни и теже:
1) Для чего нужен этот файл (что в нем и какую роль выполняет)?
2) Как связан с другими файлами и зачем?

Отдельный вопрос для чего нужен отдельный каталог Lib?

Каталог Lib нужен просто для того чтобы отделить сторонние файлы от проекта который я разрабатываю
my.cpp - собственно класс иерархической структуры - за счет использования QHash. Даный класс испоьзуется в модели
mymodel.cpp - здесь реализации модели которая позволяет конечному пользователю через представление TreeView увидеть класс (находящийся в my.cpp) в виде дерева.
mymonitor - здесь собственно реализация взаимодействия действий пользователя через GUI с моделью
sdmtest.cpp - временный класс нужный просто для забивания произвольными данными класс из my.cpp для того чтобы просто посмотреть как же выводиться дерево
Litkevich Yuriy Дата 15.8.2008, 6:33
  Т.к. не всегда и не у всех есть желание или время подробно изучать код, расказывай подробности.
1) Lib\my.cpp(h)
2) main.cpp - тут понятно
3) mymodel.cpp(h)
4) mymonitor.cpp(h)
5) mymonitor.qrc
6) mymonitor.ui
7) sdmtest.cpp(h)

Вопросы по каждому пункту одни и теже:
1) Для чего нужен этот файл (что в нем и какую роль выполняет)?
2) Как связан с другими файлами и зачем?

Отдельный вопрос для чего нужен отдельный каталог Lib?
Delphist Дата 13.8.2008, 17:28
  Народ помагите. не оставляйте меня одного с этой проблемой
niXman Дата 12.8.2008, 11:09
  Litkevich Yuriy, Мдя... Я уже помучкался с этим кодом )))
Delphist Дата 12.8.2008, 9:16
 
Цитата(Litkevich Yuriy @ 11.8.2008, 20:05) *
Так на в скидку о проблеме, видимо ты модель не коректно

да вроде все правильно делаю, а там фиг его знает...
Litkevich Yuriy Дата 11.8.2008, 20:05
  скачал твои исходники, посмотрю.
Так на в скидку о проблеме, видимо ты модель не коректно строиш из свои данных, а именно см. рисунки Классы моделей, может ты не обратил внимание на Корневой Элемент, это фиктивный элемент. и он видимо у тебя и возвращается моделью.
Delphist Дата 11.8.2008, 18:42
  Да, вижу вопрос не из простых.
Delphist Дата 11.8.2008, 11:21
 
Цитата(Litkevich Yuriy @ 11.8.2008, 10:15) *
давай свой код сюда.

Даю весь исходник (MyMonitor.zip в прикрепленном файле), не нужное я оттуда повыкидал, кое что переименовал, но суть работы остается

Цитата(Tonal @ 11.8.2008, 10:43) *
rootIsDecorated. Оно?

Нет не оно
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 4.5.2024, 13:30