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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QTableView и обновление его после insert  (Прочитано 8555 раз)
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  или что-то на подобии есть? кто как делает
« Последнее редактирование: Октябрь 19, 2007, 11:29 от NiiLit » Записан
Dodge
Гость
« Ответ #1 : Октябрь 19, 2007, 11:15 »

есть update(), а чтоб сделать окно модальным, достаточно пронаследоваться от QDialog. Например:
Код:

class MyModalWindow : publicc QDialog {
...
};

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

Записан
NiiLit
Гость
« Ответ #2 : Октябрь 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(..) обязательно надо иначе не работает...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Октябрь 19, 2007, 12:41 »

У модели можно выхвать select
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Октябрь 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.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
NiiLit
Гость
« Ответ #5 : Октябрь 19, 2007, 13:03 »

У модели можно выхвать select

QSqlQueryModel

низя!
error: 'class QSqlQueryModel' has no member named 'select'
Записан
NiiLit
Гость
« Ответ #6 : Октябрь 19, 2007, 13:05 »

а как обратиться от диалога к форме откуда был вызван диалог...
просто на нем есть model и табличка, которую и надо обновить!???

*не так давно на QT* многое непонятно..
« Последнее редактирование: Октябрь 19, 2007, 13:12 от NiiLit » Записан
Kainit
Гость
« Ответ #7 : Октябрь 19, 2007, 13:12 »

2NiiLit
1. Будьте добры, не используйте жирный шрифт без нужды. Раз уж люди зашли в тему, то они прочитают вопрос, а жирный шрифт здорово отбивает желание это делать.

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

3. Что значит "обратиться от диалога к форме"? Вы же можете сигналы диалога связать со слотами формы? Этого мало?
« Последнее редактирование: Октябрь 19, 2007, 14:24 от Kainit » Записан
Dodge
Гость
« Ответ #8 : Октябрь 19, 2007, 14:01 »

mywin.setModal( true ); - это избыточность.
поставил на всякий случай

exec() уже несёт в себе модальность.
я просто не был в этом уверен ) спс
Записан
NiiLit
Гость
« Ответ #9 : Октябрь 19, 2007, 14:31 »

1. Будьте добры, не используйте жирный шрифт без нужды. Раз уж люди зашли в тему, то они прочитают вопрос, а жирный шрифт здорово отбивает желание это делать.
выделяю то что мне ВАЖНО!  Подмигивающий, а не тебе!

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

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


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

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

Записан
Dodge
Гость
« Ответ #10 : Октябрь 21, 2007, 13:19 »

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

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

О ужоснах! Шокированный

Гуглим книгу - "Учебник по правильному задавательству вопрософ".  Смеющийся
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #11 : Октябрь 21, 2007, 13:45 »

))))

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

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
burunduk
Гость
« Ответ #12 : Октябрь 21, 2007, 13:54 »

а это появилось в самых свежих релизах Qt ?
у меня Qt 4.2.2 - такого метода в assistant нету

2. Чтобы обновить ...View надо использовать void update ( const QModelIndex & index ) (см. QAbstractItemView) , что делает просто update(), вы можете узнать, почитав исходники.
Записан
NiiLit
Гость
« Ответ #13 : Октябрь 22, 2007, 10:13 »

О ужоснах! Шокированный
вопрос был!!! по поводу обновления Вью (+ бонус ... доп. вопрос по отображению диалогового акна!. а так как непонятно было как сделать лучше то и вопрос... не совсем корректный немного!!!)

а обновление View там не было указано: тока...
Код:
    //обновление 
    ...
Записан
NiiLit
Гость
« Ответ #14 : Октябрь 22, 2007, 10:13 »

а это появилось в самых свежих релизах Qt ?
у меня Qt 4.2.2 - такого метода в assistant нету

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


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