crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Не отображается rootNode при создании класс от QAbstractItemModel
Delphist
  опции профиля:
сообщение 15.8.2008, 11:20
Сообщение #11


Студент
*

Группа: Новичок
Сообщений: 41
Регистрация: 4.8.2008
Из: Россия
Пользователь №: 249

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(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, 19:00
Сообщение #12


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


вообщем как бы я начал делать твою прогу.
Сделал бы интерфейс, который компилится, но несодержит модели и следовательно данные.
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 байт ) Кол-во скачиваний: 197

создан на основе 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_*_*
сообщение 17.8.2008, 15:32
Сообщение #13





Гости








    


Цитата(Litkevich Yuriy @ 15.8.2008, 19:00) *
Теперь вопрос, откуда идея: "класс иерархической структуры - за счет использования QHash"?

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

В моем примере MyMonitor.zip (который здесь представлен) все подробно показано как заполняется класс иерархической структуры, затем показано как этот класс используется в моей модели, и мой вопрос звучал так: почему не отображается rootNoode, нормальный ответ должен звучать приблизина так Delphist у тебя там то там то есть ошибка, если же у меня все правильно, то сказать причину по которой не выводится rootNode. Вот и все. А заниматься демагогией можно бесконечно долго ток вопроса это не решает. Поэтому, большая просьба, давать ответы по сути, а не спрашивать "откуда идея: "класс иерархической структуры - за счет использования QHash", почему такой способ хранения. Так и хочется сказать по качену, но сдержусь и отвечу, есть проект который разрабатывал не я, есть тех. зад. которое диктует мне руководство, а я всего лишь программист, и должен писать в том фундаменте который был создан без меня. и класс указанный в my.cpp он уже существует очень давно, и менять QHash на QList из-за меня не будет. Вот так вот.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 3.1.2025, 19:27