Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2011, 10:02   #1
newStudent
Пользователь
 
Аватар для newStudent
 
Регистрация: 07.07.2010
Сообщений: 44
Вопрос [Qt] Отображение в QListView данных модели

Доброго времени суток!



Имеются объекты классов QListView и QTreeView.
Оба объекта подцепляют одну модель типа QStandardItemModel.
QTreeView отображает должности сотрудников.
При нажатии на должность, раскрывается список сотрудников с этой должностью.

QListView отображает должности.

Вопрос:
Как отобразить в QListView список всех сотрудников без должностей?
Какие методы нужно переопределить?
Что можете посоветовать в данной ситуации?

P.S. Заранее спасибо!
newStudent вне форума Ответить с цитированием
Старый 15.06.2011, 16:03   #2
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

Покажите код. И обязательно ли это делать моделью?
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 16.06.2011, 07:15   #3
newStudent
Пользователь
 
Аватар для newStudent
 
Регистрация: 07.07.2010
Сообщений: 44
По умолчанию



mainwindow.h
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <mydialog.h>
#include <staff.h>

#include <mymodel.h>
#include <mysortfilterproxymodel.h>

class QAction;
class QMenu;
class QDockWidget;
class QListView;
class QLabel;
class QTextEdit;
class QTreeView;
class QTabWidget;
class QVBoxLayout;
class QTableWidget;
class QStandardItemModel;
class myModel;
class QListWidget;
class MySortFilterProxyModel;
class QItemSelectionModel;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow();

private slots:
    void about();
    void addUser();
    void addSotrudnikSlot(QString name, QString dolzhnost, QString description);

signals:
    void addSotrudnikSignal(QString name, QString dolzhnost, QString description);

private:

    void createActions();
    void createMenus();
    void createToolBar();
    void createStatusBar();
    void createDockWidgets();
    void createWidgets();
    void createTabWigdet();
    void createLayouts();
    void createModel();
    void createList();
    void createProxyModel();
    void createSelectionModel();
    QAction *newAction;
    QAction *cutAction;
    QAction *copyAction;
    QAction *pasteAction;
    QAction *exitAction;
    QAction *aboutAction;
    QAction *addUserAction;
    QToolBar *myToolBar;
    QMenu *fileMenu;
    QMenu *editMenu;
    QMenu *helpMenu;
    QLabel *descriptionLabel;
    QTextEdit *descriptionLineEdit;
    QListView *staffList;
    QTreeView *staffTree;
    QTabWidget *tabWidget;
    QWidget *mainWidget;
    QWidget *widget1;
    QWidget *widget2;
    QWidget *widget3;
    QWidget *widgetPrograms;
    QVBoxLayout *mainLayout;
    QVBoxLayout *layoutPrograms;
    QTableWidget *tableWidget;
    myDialog *dialog;
    myModel *model;
    QStandardItemModel *model123;
    Staff *spisok;
    QStringList dolzhnosti;
    MySortFilterProxyModel *filterModel;
    QItemSelectionModel *selection;
};

#endif // MAINWINDOW_H
mainwindow.cpp
Код:
MainWindow::MainWindow()
{
    setWindowTitle(tr("Graphical User Interface"));
    resize(1024,768);
    createActions();
    createMenus();
    createToolBar();
    createStatusBar();
    createList();
    createModel();
    createDockWidgets();
    createWidgets();
    createTabWigdet();
    createLayouts();
    createProxyModel();
    createSelectionModel();
    connect(this,SIGNAL(addSotrudnikSignal(QString,QString,QString)),this,
                SLOT(addSotrudnikSlot(QString,QString,QString)));
}

void MainWindow::createModel()
{
    model = new myModel(this);
    model->setHeaderData(0, Qt::Horizontal, "Sotrudniki");
    dolzhnosti << "Director" << "Menedzher" << "Razrabotchik";
    for (int nTopRow = 0; nTopRow < dolzhnosti.size(); ++nTopRow)
    {
        QModelIndex index = model->index(nTopRow, 0);
        model->setData(index, dolzhnosti[nTopRow]);

        model->insertRows(0, spisok->size(dolzhnosti[nTopRow]), index);
        model->insertColumns(0, 1, index);
        for (int nRow = 0; nRow < spisok->size(dolzhnosti[nTopRow]); ++nRow)
        {
            QString strPos = spisok->getSotrudnik(dolzhnosti[nTopRow],nRow);
            model->setData(model->index(nRow, 0,     index), strPos);
        }
    }
}

void MainWindow::createDockWidgets()
{
    QDockWidget *dockDesc = new QDockWidget("Description", this);
    dockDesc->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
    descriptionLabel = new QLabel("Description", this);
    dockDesc->setWidget(descriptionLabel);
    descriptionLineEdit = new QTextEdit("Description of employee", this);
    dockDesc->setWidget(descriptionLineEdit);
    addDockWidget(Qt::LeftDockWidgetArea, dockDesc);

    QDockWidget *dockList = new QDockWidget(tr("List of employees"), this);
    dockList->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
    staffList = new QListView(dockList);
    staffList->setModel(model);

    dockList->setWidget(staffList);
    addDockWidget(Qt::LeftDockWidgetArea, dockList);

    QDockWidget *dockTree = new QDockWidget(tr("Tree"), this);
    dockTree->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

    staffTree = new QTreeView(dockTree);
    staffTree->setModel(model);

    dockTree->setWidget(staffTree);
    addDockWidget(Qt::LeftDockWidgetArea, dockTree);
}
newStudent вне форума Ответить с цитированием
Старый 17.06.2011, 15:33   #4
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

При такой организации модели - нужно для staffList её не задавать - делать вручную. Пока больше ничего подсказать не могу .
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отображение данных sid1868 Помощь студентам 0 29.05.2011 12:55
Отображение данных Waaper БД в Delphi 2 23.05.2011 16:16
Модели данных ГИС Sweta Помощь студентам 0 20.01.2011 10:16
отображение в GRID'е данных Barbara Общие вопросы Delphi 2 13.02.2007 23:39