Название: Доступ к данным класса из другого Отправлено: 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) |