• 4085阅读
  • 1回复

使用calculateField的问题? [复制链接]

上一主题 下一主题
离线zhangde
 
只看楼主 倒序阅读 楼主  发表于: 2007-08-06
— 本帖被 XChinux 执行加亮操作(2008-07-19) —
main.h

#include <qsqlcursor.h>


class QSqlRecord;

class HostGroupCursor : public QSqlCursor
{
    public:
        HostGroupCursor();
    protected:
        QVariant calculateField( const QString & name );
};


main.cpp

#include "main.h"
#include <qdatatable.h>
#include <qsqldatabase.h>
#include <qapplication.h>

HostGroupCursor::HostGroupCursor() :
    QSqlCursor("hostgroup")
{
    QSqlFieldInfo status( "Status", QVariant::String);
    append( status );
    setCalculated( "Status", TRUE );
}


QVariant HostGroupCursor::calculateField( const QString & name )
{

    if ( name == "Status" ){
        int status = value("Status").toInt();
        return status?"Running":"Stop";

    }

    return QVariant( QString::null );

}

int main( int argc, char ** argv )
{
    QApplication a( argc, argv );
   
    QSqlDatabase *db;
    db = QSqlDatabase::addDatabase("QMYSQL3");
    db->setHostName("localhost");
    db->setDatabaseName("Host");
    db->setUserName("root");
    db->setPassword("123456");
    db->open();
   
    HostGroupCursor hostGroupCursor;
    QDataTable *hostGroupTable = new QDataTable( &hostGroupCursor );

    a.setMainWidget( hostGroupTable );

    hostGroupTable->addColumn( "GroupName",  "GroupName" );
    hostGroupTable->addColumn( "Status", "Status" );

    hostGroupTable->refresh();
    hostGroupTable->show();

    a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
    return a.exec();
}


hostgroup表中有 GroupName 和 Status,本想当Status=0时,DataTable中的Status显示Stop,非零显示Running,可是无论Status为什么值,都显示Stop。

请高手指出问题,多谢了!
离线jedychen

只看该作者 1楼 发表于: 2007-08-08
可能是 value("Status") 不对吧,呵呵,猜的
快速回复
限100 字节
 
上一个 下一个