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。
请高手指出问题,多谢了!