Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > переменная из другого класса.


Автор: papochka 25.9.2010, 17:56
Вобщем, я наверное уже замучал всех.
Есть у меня класс - MainWindow - т.е. главное окно. Есть второй класс - ListWidget.
В классе MainWindow, есть QTableWidget, там происходит обработка, и тд.
Код

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addWidget(musicTable);

Второй класс, реализует диалогое окно - плейлист. Как мне отрисовать его в классе ListWidget?
Сейчас, musicTable(QTableWidget) недоступен.

Добавлено через 2 минуты и 10 секунд
то есть в классе MainWindow все описано для musicTable - заполнение, удаление, воспроизведение. 
Я хочу просто чтоб таблица была в другом диалоге.

Автор: Mephisto 26.9.2010, 09:56
Плохое решение, на самом деле. Твой MainWindow и TableWidget должны редактировать одну модель данных. А знать о друг друге вообще не должны. 

Автор: papochka 26.9.2010, 12:48
Как тогда мне сделать это? 

Автор: papochka 26.9.2010, 13:11
Может быть можно, сделать доступным musicTable другому классу как-то?

Автор: Mephisto 27.9.2010, 15:09
Ну если на коленке, за минуту, то где-то так:
Код

    class PlayList : public QObject
        Q_OBJECT
    {
    public:
        QStringList<QString>* getPlayList();
        void loadFromFile(const QString* fileName);
        void addFile(const QString* fileName);
        void addDir(const QString* fileName);
    signals:
        void playListChanged();
    }

    class Player : public QWidget
    {
        Q_OBJECT
    public:
        void play();
        void stop();
        void pause();
        void next();
        void previous();
    private:
        PlayList* _playlist;
    }

    class PlayListWidget : public QWidget
        Q_OBJECT
    {
    public:
    private:
        PlayList* _playlist;
        void loadFromFile(const QString* fileName);
        void addFile(const QString* fileName);
        void addDir(const QString* fileName);
    private slots:
        void playListChanged();
    }

объект PlayList - содержит в себе реальный список проигруемых композиций. При изменении он оповещает кого нужно об изменениях. Объект PlayListWidget отображает список композиций и может через открытые методы обхект PlayList редактировать список. 
Объект Player содержит ссылку на PlayList, откуда и берет список следующих/предыдущих композиций. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)