Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: NiiLit от Октябрь 19, 2007, 11:05



Название: QTableView и обновление его после insert
Отправлено: NiiLit от Октябрь 19, 2007, 11:05
Код:
frmClient::frmClient(QWidget *parent)
    : QDialog(parent)


/////////////////////////////////////////////
Код:
MainWindowImpl::MainWindowImpl( QWidget * parent, Qt::WFlags f) 
: QMainWindow(parent, f)
...
делаю следующее вызываю диалог... на нем делаю инсерт:
void MainWindowImpl::addClientForm()
{
frmClient *dialogfrmClient = new frmClient;
dialogfrmClient->show();
}
как показывать форму: showmodal() но это так... найду!, но если скажете... сэкономлю время

основной вопрос: на главной есть    tableView = new QTableView; ....
сделался инсерт .. данные добавились.. а как обновить tableView?!   tableView.refresh  или что-то на подобии есть? кто как делает


Название: Re: QTableView и обновление его после insert
Отправлено: Dodge от Октябрь 19, 2007, 11:15
есть update(), а чтоб сделать окно модальным, достаточно пронаследоваться от QDialog. Например:
Код:

class MyModalWindow : publicc QDialog {
...
};

    MyModalWindow mywin;
    mywin.setModal( true );
    mywin.exec();



Название: Re: QTableView и обновление его после insert
Отправлено: NiiLit от Октябрь 19, 2007, 12:19
сенгс

========
комменты:
========

модально см. пример ниже переделанное см.выше  (просто есть setModal)
Код:
void MainWindowImpl::addClientForm()
{
frmClient *dialogfrmClient = new frmClient;
dialogfrmClient->setModal( true );
dialogfrmClient->show();
}

есть update()
что не прошло... непонимаю...

тока вот если сделать:
Код:
{
model->setQuery("SELECT brief FROM tClient");
tableView->setModel(model);
}
тогда обновляет тока     model->setQuery(..) обязательно надо иначе не работает...


Название: Re: QTableView и обновление его после insert
Отправлено: Пантер от Октябрь 19, 2007, 12:41
У модели можно выхвать select


Название: Re: QTableView и обновление его после insert
Отправлено: pastor от Октябрь 19, 2007, 12:49
есть update(), а чтоб сделать окно модальным, достаточно пронаследоваться от QDialog. Например:
Код:

class MyModalWindow : publicc QDialog {
...
};

    MyModalWindow mywin;
    mywin.setModal( true );
    mywin.exec();


mywin.setModal( true ); - это избыточность. exec() уже несёт в себе модальность.

Цитировать
int QDialog::exec ()
Shows the dialog as a modal dialog, blocking until the user closes it.


Название: Re: QTableView и обновление его после insert
Отправлено: NiiLit от Октябрь 19, 2007, 13:03
У модели можно выхвать select

QSqlQueryModel

низя!
error: 'class QSqlQueryModel' has no member named 'select'


Название: Re: QTableView и обновление его после insert
Отправлено: NiiLit от Октябрь 19, 2007, 13:05
а как обратиться от диалога к форме откуда был вызван диалог...
просто на нем есть model и табличка, которую и надо обновить!???

*не так давно на QT* многое непонятно..


Название: Re: QTableView и обновление его после insert
Отправлено: Kainit от Октябрь 19, 2007, 13:12
2NiiLit
1. Будьте добры, не используйте жирный шрифт без нужды. Раз уж люди зашли в тему, то они прочитают вопрос, а жирный шрифт здорово отбивает желание это делать.

2. Чтобы обновить ...View надо использовать void update ( const QModelIndex & index ) (см. QAbstractItemView) , что делает просто update(), вы можете узнать, почитав исходники.

3. Что значит "обратиться от диалога к форме"? Вы же можете сигналы диалога связать со слотами формы? Этого мало?


Название: Re: QTableView и обновление его после insert
Отправлено: Dodge от Октябрь 19, 2007, 14:01
mywin.setModal( true ); - это избыточность.
поставил на всякий случай

exec() уже несёт в себе модальность.
я просто не был в этом уверен ) спс


Название: Re: QTableView и обновление его после insert
Отправлено: NiiLit от Октябрь 19, 2007, 14:31
1. Будьте добры, не используйте жирный шрифт без нужды. Раз уж люди зашли в тему, то они прочитают вопрос, а жирный шрифт здорово отбивает желание это делать.
выделяю то что мне ВАЖНО!  ;), а не тебе!

2. Чтобы обновить ...View надо использовать void update ( const QModelIndex & index ) (см. QAbstractItemView) , что делает просто update(), ты можешь узнать, почитав исходники.
:-\

3. Что значит "обратиться от диалога к форме"? Вы же можете сигналы диалога связать со слотами формы? Этого мало?
мало!!! недопоняли друг друга


в общем вместо прошлого кода мне нужно было просто вот такое:
Код:
{
    frmClient dialog(this);
    if (dialog.exec() != QDialog::Accepted)
        return;

    //обновление
    ...
}



Название: Re: QTableView и обновление его после insert
Отправлено: Dodge от Октябрь 21, 2007, 13:19
в общем вместо прошлого кода мне нужно было просто вот такое:
Код:
{
    frmClient dialog(this);
    if (dialog.exec() != QDialog::Accepted)
        return;

    //обновление
    ...
}

О ужоснах! :o

Гуглим книгу - "Учебник по правильному задавательству вопрософ".  ;D


Название: Re: QTableView и обновление его после insert
Отправлено: pastor от Октябрь 21, 2007, 13:45
))))

Я уже де-то давал ссылку, как правильно формулировать вопрос. Помоему ссылка была на форум RSDN


Название: Re: QTableView и обновление его после insert
Отправлено: burunduk от Октябрь 21, 2007, 13:54
а это появилось в самых свежих релизах Qt ?
у меня Qt 4.2.2 - такого метода в assistant нету

2. Чтобы обновить ...View надо использовать void update ( const QModelIndex & index ) (см. QAbstractItemView) , что делает просто update(), вы можете узнать, почитав исходники.


Название: Re: QTableView и обновление его после insert
Отправлено: NiiLit от Октябрь 22, 2007, 10:13
О ужоснах! :o
вопрос был!!! по поводу обновления Вью (+ бонус ... доп. вопрос по отображению диалогового акна!. а так как непонятно было как сделать лучше то и вопрос... не совсем корректный немного!!!)

а обновление View там не было указано: тока...
Код:
    //обновление 
    ...


Название: Re: QTableView и обновление его после insert
Отправлено: NiiLit от Октябрь 22, 2007, 10:13
а это появилось в самых свежих релизах Qt ?
у меня Qt 4.2.2 - такого метода в assistant нету

2. Чтобы обновить ...View надо использовать void update ( const QModelIndex & index ) (см. QAbstractItemView) , что делает просто update(), вы можете узнать, почитав исходники.
+1


Название: Re: QTableView и обновление его после insert
Отправлено: Kainit от Октябрь 22, 2007, 15:53
Цитировать
тобы обновить ...View надо использовать void update ( const QModelIndex & index ) (см. QAbstractItemView) , что делает просто update(), вы можете узнать, почитав исходники.
Да, это с версии 4.3. Поскольку никто версию с которой работает не называл и я автоматически думал что у всех 4.3.2. Спрашивайте в следующий раз конкретнее.
Возможно вам поможет setDirtyRegion. А вообще, новые версии выпускаются не зря.
Ну, в крайнем случае можно ведь сделать reset модели и всё шикарно само собой обновиться (но это крайняя мера).
У меня исходников 4.2 нету, но я вам рекомендую поглядеть исходники TTreeWidget и посмотреть как там обходятся с обновлениями.