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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: repaint tableview  (Прочитано 5608 раз)
crossly
Гость
« : Март 24, 2009, 16:51 »

привет всем.... обновляю модель.... вьюшка не перерисовывается... сворачиваю... разворачиваю... перерисовалась... где грабли... ?? (Qt-4.5.0)
Записан
spirit
Гость
« Ответ #1 : Март 24, 2009, 16:56 »

а код можно увидеть?
Записан
crossly
Гость
« Ответ #2 : Март 24, 2009, 17:44 »

а чё там смотреть ....
Код:
model->select();...
Записан
spirit
Гость
« Ответ #3 : Март 24, 2009, 17:46 »

а чё там смотреть ....
Код:
model->select();...
ну update() вызови после этого, раз смотреть не на что  Подмигивающий
Записан
crossly
Гость
« Ответ #4 : Март 24, 2009, 18:11 »

пробовал.... и update() и repaint() .... эффекта 0... пока не свернёш и развернёш.... такое чувство то вьюха не хнает что ей надо перерисоватся...
Записан
spirit
Гость
« Ответ #5 : Март 24, 2009, 18:15 »

насколько я понимаю ты юзаешь QSqlTableModel?
что тогда возвращает?
Код
C++ (Qt)
qDebug() << model->select();
 
Записан
BRE
Гость
« Ответ #6 : Март 24, 2009, 18:22 »

И еще напиши, как ты изменяешь данные в модели...
Информируешь ли при изменении данных (добавление/удаление записи) вьюшку?
Вообщем, как происходит работа с моделью.
Записан
crossly
Гость
« Ответ #7 : Март 25, 2009, 10:08 »

модель унаследована от QSqlQueryModel... изменений не происходит.... просто делаю новый селект для модели....
Записан
spirit
Гость
« Ответ #8 : Март 25, 2009, 10:32 »

может все-таки наследуется от QSqlTableModel в QSqlQueryModel нет метода select. ну да ладно.
все работает чудесно
h-file
Код
C++ (Qt)
#ifndef TEST_H
#define TEST_H
 
#include <QtGui>
#include <QtSql>
 
class MyQueryModel: public QSqlTableModel
{
public:
MyQueryModel(QObject *parent = 0) : QSqlTableModel(parent) {}
};
 
class Test : public QWidget
{
 Q_OBJECT
 public:
   Test(QWidget *parent = 0);
virtual ~Test();
 
private slots:
void updateQuery();
 
private:
QTableView *m_tv;
QPushButton *m_pbUpdateQuery;
MyQueryModel *m_model;
};
#endif
 

cpp-file
Код
C++ (Qt)
#include "test.h"
#include <QtGui>
 
Test::Test(QWidget *parent)
: QWidget(parent)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
db.setDatabaseName(...);
db.setUserName(...);
db.setPassword(...);
if (db.open()) {
m_model = new MyQueryModel();
m_model->setTable(...);
m_model->select();
 
m_tv = new QTableView();
m_tv->setModel(m_model);
 
QHBoxLayout *hbl = new QHBoxLayout(this);
hbl->addWidget(m_tv);
 
m_pbUpdateQuery = new QPushButton(tr("Update"));
hbl->addWidget(m_pbUpdateQuery);
 
connect(m_pbUpdateQuery, SIGNAL(clicked()), SLOT(updateQuery()));
}
}
 
Test::~Test()
{
const QStringList names = QSqlDatabase::connectionNames();
foreach (const QString &name, names)
QSqlDatabase::removeDatabase(name);
}
 
void Test::updateQuery()
{
if (!m_model)
return;
 
m_model->setTable(...);
m_model->select();
}
 
« Последнее редактирование: Март 25, 2009, 11:03 от spirit » Записан
crossly
Гость
« Ответ #9 : Март 25, 2009, 11:06 »

sorry ... my bad... Строит глазки.... blockSignals(true).... Улыбающийся
Записан
spirit
Гость
« Ответ #10 : Март 25, 2009, 11:07 »

просили же код показать  Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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