Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Ринат от Май 18, 2015, 20:40



Название: как перенести вывод таблицы БД в отдельную процедуру?
Отправлено: Ринат от Май 18, 2015, 20:40
Добрый вечер. Может для кого то этот вопрос будет глупым, но я его все-таки опишу. Задача состоит вот в чем:
во всех примерах данный кусок кода
Код:
    QTableView     view;
    QSqlTableModel model;

    model.setTable("addressbook");
    model.select();
    model.setEditStrategy(QSqlTableModel::OnFieldChange);
   
    view.setModel(&model);
    view.show();

описывают в main'е, но мне его надо поместить в отдельную процедуру класса, т.к. она будет вызываться для каждой модели отдельно.
пытался перенести обычным способом а-ля
Код:
class A : public QObject
{
     
    public:
       void showTab()
{
       QTableView     view;
       QSqlTableModel model;
       model.setTable("addressbook");
       model.select();
       model.setEditStrategy(QSqlTableModel::OnFieldChange);
   
       view.setModel(&model);
       view.show();
}
     
и соответственно в main.сpp его вызывать
Код:
   А а;
   a.showTab();
но ничего не выводится, почему?


Название: Re: как перенести вывод таблицы БД в отдельную процедуру?
Отправлено: Old от Май 18, 2015, 20:43
Потому что объекты виджета и модели разрушаются при завершении метода.


Название: Re: как перенести вывод таблицы БД в отдельную процедуру?
Отправлено: Ринат от Май 18, 2015, 20:47
Потому что объекты виджета и модели разрушаются при завершении метода.
а как посоветуете справиться с этой проблемой?


Название: Re: как перенести вывод таблицы БД в отдельную процедуру?
Отправлено: Old от Май 18, 2015, 20:51
а как посоветуете справиться с этой проблемой?
Создавать объекты этих классов не на стеке, а в куче (через new).


Название: Re: как перенести вывод таблицы БД в отдельную процедуру?
Отправлено: Ринат от Май 18, 2015, 20:59
а как посоветуете справиться с этой проблемой?
Создавать объекты этих классов не на стеке, а в куче (через new).
дай Бог вам здоровья))) все получилось, спасибище!