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

Wt - QueryModel和WTableView?
EN

Stack Overflow用户
提问于 2015-01-28 13:18:19
回答 1查看 889关注 0票数 3

我从Wt开始,在学习ORM模块的基础知识之后,我试图展示一个表(TableTags)的结果,但没有成功。

我已经将表TableTag定义为:

代码语言:javascript
复制
class TableTag
{
public:
    static const unsigned int tableVersion = 1;
    std::string name;
    //Wt::Dbo::collection< Wt::Dbo::ptr<TablePost> > tablePosts;

    TableTag();
    ~TableTag();
    static void initTableRecords(Wt::Dbo::Session &_session);

    template<class Action>
    void persist(Action &_action)
    {
        Wt::Dbo::field(_action, name, "Name");

        //Wt::Dbo::hasMany(_action, tablePosts, Wt::Dbo::ManyToMany, "Post");
    }
};
typedef Wt::Dbo::collection< Wt::Dbo::ptr<TableTag> > TableTags;

我在乞讨一个类似于:

代码语言:javascript
复制
DDBBApp::setDDBBBackendAndSession(ddbbBackend_,ddbbSession_);
ddbbSession_.mapClass<TableTag>("TableTag");
{
    Wt::Dbo::Transaction transaction(ddbbSession_);

    Wt::Dbo::QueryModel<TableTag> * qmTags = new Wt::Dbo::QueryModel<TableTag>();
    TableTags tags = ddbbSession_.find<TableTag>();
    Wt::Dbo::Query<TableTag> qTag(ddbbSession_.find<TableTag>());
    qmTags->setQuery(qTag);


    WTableView * wtv = new WTableView();
    wtv->setModel(qmTags);
}

但是编译器会抱怨这个错误(VS2013,翻译成英文):

DDBBApp.cpp(54):C2664:' Wt::Dbo::Query ::Query(Wt::Dbo::Session &,const std::string &,const std::string &)‘:参数1不能从'Wt::Dbo::Query’转换为'const::Dbo:Query &‘

我试过几个构造函数,变量类型,等等.我知道关键就在这里:

代码语言:javascript
复制
Wt::Dbo::QueryModel<TableTag> * qmTags = new Wt::Dbo::QueryModel<TableTag>();

Wt::Dbo::Query< Wt::Dbo::ptr<TableTag> > q1 = ddbbSession_.find<TableTag>();
qmTags->setQuery(qTag); //Error here

Wt::Dbo::Query<TableTag> q2 = ddbbSession_.find<TableTag>(); //Error here
qmTags->setQuery(q2);

但我无法处理这件事,我认为正确的方法是第二条,根据我搜索到的docu和代码片段。

有人能发布一个简单的例子,这样我就可以澄清Wt是如何处理这个的吗?

Wy墙,我使用Wt 3.3.3下的Win 8.1 + VS 2013。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-28 15:45:59

最后,我想这是^_^,多亏了:在WTableView上不使用QueryModel获取头

严格的代码如下:

代码语言:javascript
复制
Wt::Dbo::QueryModel< Wt::Dbo::ptr<TableTag> > * qmTags1 = new Wt::Dbo::QueryModel< Wt::Dbo::ptr<TableTag> >();
qmTags1->setQuery(ddbbSession_.find<TableTag>());
qmTags1->addAllFieldsAsColumns();

WTableView * wtv1 = new WTableView();
wtv1->setModel(qmTags1);
this->root()->addWidget(wtv1);

注意:不要忘记使用QueryModel->setQuery()!

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

https://stackoverflow.com/questions/28193296

复制
相关文章

相似问题

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