Russian Qt Forum

Qt => Общие вопросы => Тема начата: 461 от Март 26, 2010, 10:01



Название: QListView
Отправлено: 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 помещалось имя выбранного элемента?

Заранее большое спасибо.


Название: Re: QListView
Отправлено: SimpleSunny от Март 26, 2010, 10:38
У ListView есть сигнал void clicked ( const QModelIndex & index ) соедени его со слотом, а в слоте используй index.data().


Название: Re: QListView
Отправлено: 461 от Март 26, 2010, 10:49
соединил так QObject::connect(ui->MyList, SIGNAL(clicked(const QModelIndex & index )), this, SLOT(cl_tl())); привильно? :) ???

а как index.data()  использовть ???


Название: Re: QListView
Отправлено: SimpleSunny от Март 26, 2010, 11:18
QObject::connect(ui->MyList, SIGNAL(clicked(QModelIndex)), this, SLOT(cl_tl(QModelIndex)));
UPD.


Название: Re: QListView
Отправлено: 461 от Март 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);
}
не работает.  ???


Название: Re: QListView
Отправлено: SimpleSunny от Март 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);
}


Название: Re: QListView
Отправлено: 461 от Март 26, 2010, 11:47
Бланшета уже качаю)
но у меня не работает, ругается:
 ISO C++ forbids declaration of 'QModelIndex' with no type
 expected ',' or '...' before '&' token

ничего не понимаю :o


Название: Re: QListView
Отправлено: crossly от Март 26, 2010, 12:24
Код:
QString t = index->data(Qt::DisplayRole).toString();
должно быть
Код:
QString t = index.data(Qt::DisplayRole).toString();

тут по ходу еще и непонимание с++... или просто не желание вчитываться в то, что тебе пишут... :)