Russian Qt Forum

Qt => Вопросы новичков => Тема начата: sk9 от Август 31, 2012, 00:47



Название: Доступ к данным класса из другого
Отправлено: sk9 от Август 31, 2012, 00:47
Добрый день, в поиске не нашёл решения, если что, прошу ткнуть пальцем. Не могу догадаться как решить проблему. Кинуть drag'n'drop'ом в QListWidget что-нибудь, и в зависимости от состояния QCheckBox сделать определённые действия.
.h:
#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui>
class QModListWidget : public QListWidget
{Q_OBJECT
protected:
    virtual void dragEnterEvent(QDragEnterEvent *event)
         {event->acceptProposedAction();}
    virtual void dropEvent(QDropEvent *event)
         {func(event->mimeData()->urls());}
    virtual void dragMoveEvent(QDragMoveEvent *e){}
public:
    void func(QList<QUrl> paths);
};

class Widget : public QWidget
{Q_OBJECT
public:
    Widget(QWidget *parent = 0);
    QModListWidget *mlw;
    QCheckBox *cb;
    QVBoxLayout *vbl;
};
#endif // WIDGET_H

.cpp:
#include "widget.h"
Widget::Widget(QWidget *parent) : QWidget(parent)
{
    lw = new QModListWidget; cb = new QCheckBox; vbl = new QVBoxLayout;
    lw->setAcceptDrops(true);
    vbl->addWidget(lw_con_paths); vbl->addWidget(cb_con_subfolders); setLayout(vbl);
}

void QModListWidget::func(QList<QUrl> paths)
{
    int g;
    if (??.isChecked) g = 5; else g = 10; //....
}

В ?? ругается, что отсутствует ссылка на объект, что логично. Но как мне её указать, если объект cb создан в Widget::Widget(....


Название: Re: Доступ к данным класса из другого
Отправлено: kambala от Август 31, 2012, 00:59
добавить булевую переменную в свой листвиджет и сконнектить смену состояния чекбокса с новым слотом листвиджета, в котором булевой переменной будет присваиваться новое значение чекбокса.

и ещё: создавать виджеты без родителей и передавать классы по значению — не очень хорошо


Название: Re: Доступ к данным класса из другого
Отправлено: kambala от Август 31, 2012, 01:25
1. lw = new QModListWidget(this); cb = new QCheckBox(this);
2. void QModListWidget::func(const QList<QUrl> &paths)