Russian Qt Forum
Ноябрь 22, 2024, 22:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как вставить в QTableWidget QItemDelegate с неск виджетами?  (Прочитано 8378 раз)
Natalie
Гость
« : Ноябрь 09, 2005, 18:01 »

Люди, помогите.

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

Если кто знает, подскажите, plz.
Записан
Sergeich
Гость
« Ответ #1 : Ноябрь 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
Записан
Natalie
Гость
« Ответ #2 : Ноябрь 11, 2005, 14:40 »

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

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

А зачем тебе это!? Эти методы ( setLabelText(...) и setText(...)  )  должен вызывать MyDelegate в методе setEditorData, а установку этих строк надо делать через QAbstractItemModel::setData.
Записан
Natalie
Гость
« Ответ #4 : Ноябрь 11, 2005, 18:14 »

Все, поняла. Большое спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 21.