Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Natalie от Ноябрь 09, 2005, 18:01



Название: как вставить в QTableWidget QItemDelegate с неск виджетами?
Отправлено: Natalie от Ноябрь 09, 2005, 18:01
Люди, помогите.

Мне нужно в QTableWidget вставить QItemDelegate, но не просто, к примеру, один QComboBox, а несколько виджетов. И нужно, чтоб информацию в этих виджетах (например, текст в QLabel) можно было менять в процессе работы приложения.
Как вставлять один виджет и им управлять - ясно, но как поступить с несколькими?
Я думала использовать какой-нибудь контейнер виджетов (QFrame), но как в него вставить эти виджеты и потом до них добираться?  :(

Если кто знает, подскажите, plz.


Название: как вставить в QTableWidget QItemDelegate с неск виджетами?
Отправлено: Sergeich от Ноябрь 09, 2005, 20:46
Не понимаю в чем проблема. Создаешь какой-нить класс виджета, скажем MyVeryUsefulWidget, наследуешь его от QFrame, в конструкторе создаешь нужные виджеты и добавляешь методы для получения / модификации данных. Например
Код:

class MyVeryUsefulWidget : public QFrame
{
  Q_OBJECT
public:
  MyVeryUsefulWidget( QWidget* parent ) {
    label = new QLabel( this );
    edit = new QLineEdit( this );
    QHBoxLayout* layout = new QHBoxLayout( this );
    layout->addWidget( label );
    layout->addWidget( edit );    
  }
  QString labelText() const { return label->text(); }
  QString text() const { return edit->text(); }
public slots:
  void setLabelText( const QString& t ) { label->setText(t); }
  void setText( const QString& t ) { edit->setText(t); }
private:
  QLabel* label;
  QLineEdit* edit;
};  

 Потом реализуешь для QItemDelegate методы createEditor,setEditorData и setModelData


Название: как вставить в QTableWidget QItemDelegate с неск виджетами?
Отправлено: Natalie от Ноябрь 11, 2005, 14:40
Глупый вопрос:
а как мне из главной программы где у меня объявлен QTableWidget и где написано:
ui.tableWidget->setItemDelegate(new MyDelegate(this));
вызвать функции setLabelText(...) и setText(...) ?
Как мне доступиться до MyDelegate ?
Сделать connect(...), но как ?


Название: как вставить в QTableWidget QItemDelegate с неск виджетами?
Отправлено: Sergeich от Ноябрь 11, 2005, 16:06
Цитата: "Natalie"
Глупый вопрос:
а как мне из главной программы где у меня объявлен QTableWidget и где написано:
ui.tableWidget->setItemDelegate(new MyDelegate(this));
вызвать функции setLabelText(...) и setText(...) ?
Как мне доступиться до MyDelegate ?
Сделать connect(...), но как ?

А зачем тебе это!? Эти методы ( setLabelText(...) и setText(...)  )  должен вызывать MyDelegate в методе setEditorData, а установку этих строк надо делать через QAbstractItemModel::setData.


Название: как вставить в QTableWidget QItemDelegate с неск виджетами?
Отправлено: Natalie от Ноябрь 11, 2005, 18:14
Все, поняла. Большое спасибо!