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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: перемещение по TableView-продолжение  (Прочитано 3265 раз)
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« : Июнь 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));
}
Проблема, похоже ерундовая, но никак не пойму за что ухватиться. Помогите!
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
EhTemka
Гость
« Ответ #1 : Июнь 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);
Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #2 : Июль 01, 2009, 08:12 »

Спасибо! А ведь, что обидно-была такая мысль, даже написал connect после установки Model, а потом что-то засомневался и стер
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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