首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wt++ TableView和QueryModel

Wt++ TableView和QueryModel
EN

Stack Overflow用户
提问于 2020-12-29 11:50:57
回答 1查看 97关注 0票数 0

我对tableView和queryModel有一个问题--这是我的错误:

代码语言:javascript
复制
    lo.C: In constructor ‘HelloApplication::HelloApplication(const Wt::WEnvironment&)’:
hello.C:162:48: error: no matching function for call to ‘Wt::WTableView::setModel(std::remove_reference<Wt::Dbo::QueryModel<Wt::Dbo::ptr<Utente> >*&>::type)’
 tableView->setModel( std::move(modelDataTable) );
                                                ^
In file included from hello.C:30:0:
/usr/local/include/Wt/WTableView.h:94:16: note: candidate: virtual void Wt::WTableView::setModel(const std::shared_ptr<Wt::WAbstractItemModel>&)
   virtual void setModel(const std::shared_ptr<WAbstractItemModel>& model)
                ^
/usr/local/include/Wt/WTableView.h:94:16: note:   no known conversion for argument 1 from ‘std::remove_reference<Wt::Dbo::QueryModel<Wt::Dbo::ptr<Utente> >*&>::type {aka Wt::Dbo::QueryModel<Wt::Dbo::ptr<Utente> >*}’ to ‘const std::shared_ptr<Wt::WAbstractItemModel>&’

这是一个Utente类:

代码语言:javascript
复制
class Utente
{ 
public:
  Utente();
    std::string nome;
    std::string cognome;

    template<class Action>
    void persist(Action& a)
    {
        dbo::field(a, nome, "nome");
        dbo::field(a, cognome, "cognome");
    }
   ~Utente();
};

此代码在应用程序类中:

代码语言:javascript
复制
auto *modelDataTable = new Wt::Dbo::QueryModel<Wt::Dbo::ptr<Utente>>();
modelDataTable->setQuery(session.query<Wt::Dbo::ptr<Utente>>("select utente from utente Utente"));
modelDataTable->addAllFieldsAsColumns();

auto tableView = root()->addWidget(std::make_unique<Wt::WTableView>() );
tableView->setModel( std::move(modelDataTable) );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-29 20:41:08

Wt::WTableView::setModel需要一个共享指针,即std::shared_ptr<Wt::WAbstractItemModel>,而不是指向项模型的原始指针。

所以,你应该把

代码语言:javascript
复制
auto *modelDataTable = new Wt::Dbo::QueryModel<Wt::Dbo::ptr<Utente>>();

通过

代码语言:javascript
复制
auto modelDataTable = std::make_shared<Wt::Dbo::QueryModel<Wt::Dbo::ptr<Utente>> >();

请注意,这正是您的错误信息告诉您的:

不知道参数1从std::remove_reference<Wt::Dbo::QueryModel<Wt::Dbo::ptr<Utente> >*&>::type {aka __Wt::Dbo::QueryModel<Wt::Dbo::ptr<Utente> >*}到const std::shared_ptr<Wt::WAbstractItemModel>&的转换

(试着重新阅读错误信息,以便下次理解它)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65491682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档