Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: mokynis от Июнь 30, 2009, 13:53



Название: перемещение по TableView-продолжение
Отправлено: mokynis от Июнь 30, 2009, 13:53
(Qt 4.5.1) Ета тема уже поднималась (http://www.prog.org.ru/topic_7117_0.html), а все равно ничего не получается. Делаю так же, как в теме по ссылке-в дизанере создал диалог, на нем лежит QTableView и QLineEdit. Таблица заполняется из запроса. Все отображается, и вот перемещение по таблице программа игнорирует-даже на Breapoint не попадает.
Вот исходники:
dialogimpl.h
Код:
class DialogImpl : public QDialog, public Ui::Dialog
{
Q_OBJECT
public:
  DialogImpl( QWidget * parent = 0, Qt::WFlags f = 0 );
private:
  QString btnName;
private slots:
  void fillEdit(const QModelIndex &, const QModelIndex &);
protected:
  virtual bool start();
  virtual void closeEvent(QCloseEvent *event);
};

class MyModel:public QSqlQueryModel
{
Q_OBJECT
public:
  MyModel();
  Qt::ItemFlags flags(const QModelIndex &index) const;
  QVariant data(const QModelIndex &index,int role=Qt::DisplayRole) const;
private:
  void refresh();
};
dialogimpl.cpp
Код:
DialogImpl::DialogImpl( QWidget * parent, Qt::WFlags f) 
: QDialog(parent, f)
{
  setupUi(this);
  connect(tab_view->selectionModel(),SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),this,SLOT(fillEdit(const QModelIndex &, const QModelIndex &)));
  start();
  MyModel *model=new MyModel();
  tab_view->setModel(model);
}

MyModel::MyModel()
{
refresh();
}

Qt::ItemFlags MyModel::flags(const QModelIndex &index) const
{........}

QVariant MyModel::data(const QModelIndex &index,int role) const
{.........}

void MyModel::refresh()
{
  setQuery("SELECT ...FROM ....");
  setHeaderData(0,Qt::Horizontal,tr("..."));
  .....
}

bool DialogImpl::start()
{
  QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL3");
  ........
}

void DialogImpl::closeEvent(QCloseEvent *event)
{...}

void DialogImpl::fillEdit(const QModelIndex & current, const QModelIndex &previuos)
{
  int row=current.row();
  EInvNum->setText(QString::number(row));
}
Проблема, похоже ерундовая, но никак не пойму за что ухватиться. Помогите!


Название: Re: перемещение по TableView-продолжение
Отправлено: EhTemka от Июнь 30, 2009, 23:05
Код
C++ (Qt)
 start();
 MyModel *model=new MyModel();
 tab_view->setModel(model);
 connect(tab_view->selectionModel(),SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),this,SLOT(fillEdit(const QModelIndex &, const QModelIndex &)));
 

  При установке модели во вьювер создается новая selectionModel, поэтому нужно производить коннект после tab_view->setModel(model);


Название: Re: перемещение по TableView-продолжение
Отправлено: mokynis от Июль 01, 2009, 08:12
Спасибо! А ведь, что обидно-была такая мысль, даже написал connect после установки Model, а потом что-то засомневался и стер