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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QListView  (Прочитано 4615 раз)
461
Гость
« : Март 26, 2010, 10:01 »

У меня есть элемент QListView MyList, в который помещаются данные из БД таким образом:

       QSqlQueryModel * model = new QSqlQueryModel(0);
       model->setQuery("SELECT * FROM name");
       QListView * view = ui->MyList;
       view->setModel(model);

Помогите пожалуйста сделать обработчик для MyList чтобы когда тыкаешь по элементу из списка, в QLineEdit помещалось имя выбранного элемента?

Заранее большое спасибо.
Записан
SimpleSunny
Гость
« Ответ #1 : Март 26, 2010, 10:38 »

У ListView есть сигнал void clicked ( const QModelIndex & index ) соедени его со слотом, а в слоте используй index.data().
Записан
461
Гость
« Ответ #2 : Март 26, 2010, 10:49 »

соединил так QObject::connect(ui->MyList, SIGNAL(clicked(const QModelIndex & index )), this, SLOT(cl_tl())); привильно? Улыбающийся Непонимающий

а как index.data()  использовть Непонимающий
« Последнее редактирование: Март 26, 2010, 10:59 от 461 » Записан
SimpleSunny
Гость
« Ответ #3 : Март 26, 2010, 11:18 »

QObject::connect(ui->MyList, SIGNAL(clicked(QModelIndex)), this, SLOT(cl_tl(QModelIndex)));
UPD.
Записан
461
Гость
« Ответ #4 : Март 26, 2010, 11:27 »

public slots:
    void cl_tl();

....
QObject::connect(ui->MyList, SIGNAL(clicked(QModelIndex)), this, SLOT(cl_tl(QModelIndex)));
....
void Proga::cl_tl()
{
    QString t = index->data(0).toString();
    ui->Name>setText(t);
}
не работает.  Непонимающий
« Последнее редактирование: Март 26, 2010, 11:29 от 461 » Записан
SimpleSunny
Гость
« Ответ #5 : Март 26, 2010, 11:34 »

На лицо явное непонимание основ. Почитайте Бланшет, станет все понятней.
Код
C++ (Qt)
public slots:
   void cl_tl([b]const QModelIndex &index[/b]);
 
....
QObject::connect(ui->MyList, SIGNAL(clicked(QModelIndex)), this, SLOT(cl_tl(QModelIndex)));
....
void Proga::cl_tl([b]const QModelIndex &index[/b])
{
   QString t = index->data([b]Qt::DisplayRole[/b]).toString();
   ui->Name>setText(t);
}
Записан
461
Гость
« Ответ #6 : Март 26, 2010, 11:47 »

Бланшета уже качаю)
но у меня не работает, ругается:
 ISO C++ forbids declaration of 'QModelIndex' with no type
 expected ',' or '...' before '&' token

ничего не понимаю Шокированный
Записан
crossly
Гость
« Ответ #7 : Март 26, 2010, 12:24 »

Код:
QString t = index->data(Qt::DisplayRole).toString();
должно быть
Код:
QString t = index.data(Qt::DisplayRole).toString();

тут по ходу еще и непонимание с++... или просто не желание вчитываться в то, что тебе пишут... Улыбающийся
« Последнее редактирование: Июль 27, 2010, 18:25 от crossly » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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