TUiLoader Class

通过JavaScript生成动态界面 More...

Header: #include <TUiLoader>
Inherits: QFrame

Public Functions

TUiLoader(QWidget *parent = 0)
~TUiLoader()
bool loadValues(const QScriptValue &iValueScriptValue, bool iClearBeforeBol = true)
void setCreateCallback(QObject *iObj, QObject *(* ) ( QObject * iObj, const QString & iTypeStr, const QVariant & iParam ) iFunc)
void setValue(const QString &iNameStr, const QScriptValue &iValueScriptValue)
void setValue(QObject *iObjectPtr, const QScriptValue &iValueScriptValue)
  • 14 public functions inherited from QFrame
  • 213 public functions inherited from QWidget

Public Slots

bool addObject(const QString &iNameStr, QObject *iObjectPtr)
void clearValues()
QObject *getActiveObject() const
QString getActiveObjectName() const
QObjectList getAllObject()
QScriptValue getAllValues(bool iIncludeInvisibleBol = false)
QObject *getObject(const QString &iNameStr)
QScriptValue getTitle(const QString &iNameStr)
QScriptValue getTitle(QObject *iObjectPtr)
QScriptValue getUserData(const QString &iNameStr)
QScriptValue getUserData(QObject *iObjectPtr)
QScriptValue getValue(const QString &iNameStr)
QScriptValue getValue(QObject *iObjectPtr)
bool isBlockChange()
bool isBlockValidate()
bool isChanged()
bool loadValues(const QVariant &iValueVar, bool iClearBeforeBol = true)
int margin() const
void refreshState()
void refreshState(QObject *iObjectPtr)
TScriptEngine *scriptEngine()
QObject *self()
void setActiveObject(QObject *iObject)
void setActiveObject(const QString &iObjectName)
void setBgColor(const QString &iNameStr, const QString &iColorStr)
void setBlockChange(bool iBlockBol = true)
void setBlockValidate(bool iBlockBol = true)
void setChanged(bool iChangedBol = true)
void setFgColor(const QString &iNameStr, const QString &iColorStr)
void setMargin(int iMargin)
void setScriptEngine(TScriptEngine *iScriptEnginePtr)
void setSelf(QObject *iObjectPtr)
void setState(const QString &iNameStr, const QString &iStateStr)
void setState(QObject *iObjectPtr, const QString &iStateStr)
bool setUiFile(const QString &iFilePathStr)
bool setUiItems(const QScriptValue &iUiValScriptValue)
bool setUiStr(const QString &iUiStr)
void setValue(const QString &iNameStr, const QVariant &iValueVar)
void setValue(QObject *iObjectPtr, const QVariant &iValueVar)
void triggerFormula(QObject *iObjectPtr = 0)
QVariantMap validate(QObject *iObjectPtr = 0, const QString &iMomentStr = QString( "EDIT" ))
QVariantList validateAll(const QString &iMomentStr, bool iBlockSetValueBol = false, const QString &iReturnErrTypeStr = "All")
  • 19 public slots inherited from QWidget

Signals

void dataChanged()
void quitDialog(bool iAccept)
void validateMessaged(QVariantMap iMsgVarMap)
void valueEdited(const QString &iNameStr, QObject *oObject)

Static Public Members

QObject *loadPlugin(const QString &iPluginName)
  • 5 static public members inherited from QWidget

Protected Functions

bool eventFilter(QObject *iObjectPtr, QEvent *iEvent)

Reimplemented Protected Functions

virtual void keyPressEvent(QKeyEvent *iKeyEvent)
  • 4 protected functions inherited from QFrame
  • 35 protected functions inherited from QWidget

Additional Inherited Members

  • 6 properties inherited from QFrame
  • 58 properties inherited from QWidget
  • 1 protected slot inherited from QWidget

Detailed Description

通过JavaScript生成动态界面

并在QUiLoader的基础上集成了数据有效性验证,快速设置或获取界面数据等功能. 下例是一个简单的使用TUiLoader的例子,可以生成如下图所示的界面.

"Example 1"


  #include <QApplication>
  #include <QtWidgets>
  #include <QScriptValue>
  #include <twidget/tuiloader.h>

  int main(int argc, char *argv[])
  {
      QApplication a(argc, argv);

      QString uistr = "{" \
          "name : 'hbox1'," \
          "type : 'HBoxLayout'," \
          "property : { spacing:5, margin:3 }," \
          "pack : {stretch:0, alignment:'Qt::AlignLeft|Qt::AlignTop' }," \
          "child : [" \
              "{" \
                  "name : 'label1'," \
                  "type : 'Label'," \
                  "property : {text:'Label:',buddy:'lineedit1',alignment:'Qt::AlignRight'}," \
                  "pack : {stretch:0, alignment:'Qt::AlignLeft|Qt::AlignTop' }," \
              "}," \
              "{" \
                  "name : 'lineedit1'," \
                  "type : 'LineEdit'," \
                  "value : 'Line Edit Value 1'," \
                  "property : {}," \
                  "pack : {stretch:1}," \
              "}," \
          "]" \
       "}";

      QMainWindow *mw =  new QMainWindow;
      TUiLoader ui(mw);
      ui.setUiStr(uistr);
      mw->show();

      return a.exec();
  }

Member Function Documentation

TUiLoader::TUiLoader(QWidget *parent = 0)

Default constructs an instance of TUiLoader.

TUiLoader::~TUiLoader()

Destroys the instance of TUiLoader.

[slot] bool TUiLoader::addObject(const QString &iNameStr, QObject *iObjectPtr)

[slot] void TUiLoader::clearValues()

[signal] void TUiLoader::dataChanged()

[protected] bool TUiLoader::eventFilter(QObject *iObjectPtr, QEvent *iEvent)

[slot] QObject *TUiLoader::getActiveObject() const

[slot] QString TUiLoader::getActiveObjectName() const

[slot] QObjectList TUiLoader::getAllObject()

获取所有控件的指针

[slot] QScriptValue TUiLoader::getAllValues(bool iIncludeInvisibleBol = false)

获取所有数据 include_invisible : 是否包含隐藏的对象值 Returns {name:'Tony', age:23}

[slot] QObject *TUiLoader::getObject(const QString &iNameStr)

获取名称为 iNameStr 为控件对象

[slot] QScriptValue TUiLoader::getTitle(const QString &iNameStr)

获取名称为 iNameStr 的title值

[slot] QScriptValue TUiLoader::getTitle(QObject *iObjectPtr)

获取 iObjectPtr 的title值

[slot] QScriptValue TUiLoader::getUserData(const QString &iNameStr)

获取名称为 iNameStr 的UserData

[slot] QScriptValue TUiLoader::getUserData(QObject *iObjectPtr)

获取iObjectPtr 的UserData

[slot] QScriptValue TUiLoader::getValue(const QString &iNameStr)

获取对象名称为 iNameStr 的值

[slot] QScriptValue TUiLoader::getValue(QObject *iObjectPtr)

获取 object 的值

[slot] bool TUiLoader::isBlockChange()

是否阻塞DataChanged事件

[slot] bool TUiLoader::isBlockValidate()

是否阻塞有效性验证事件发生

[slot] bool TUiLoader::isChanged()

[virtual protected] void TUiLoader::keyPressEvent(QKeyEvent *iKeyEvent)

[static] QObject *TUiLoader::loadPlugin(const QString &iPluginName)

bool TUiLoader::loadValues(const QScriptValue &iValueScriptValue, bool iClearBeforeBol = true)

载入值

values :格式如{name:'Tony', age:32}

[slot] bool TUiLoader::loadValues(const QVariant &iValueVar, bool iClearBeforeBol = true)

[slot] int TUiLoader::margin() const

See also setMargin().

[signal] void TUiLoader::quitDialog(bool iAccept)

[slot] void TUiLoader::refreshState()

[slot] void TUiLoader::refreshState(QObject *iObjectPtr)

[slot] TScriptEngine *TUiLoader::scriptEngine()

See also setScriptEngine().

[slot] QObject *TUiLoader::self()

See also setSelf().

[slot] void TUiLoader::setActiveObject(QObject *iObject)

[slot] void TUiLoader::setActiveObject(const QString &iObjectName)

[slot] void TUiLoader::setBgColor(const QString &iNameStr, const QString &iColorStr)

[slot] void TUiLoader::setBlockChange(bool iBlockBol = true)

设置是否阻塞DataChanged事件

block : true=阻塞, false=不阻塞

See also isBlockChange().

[slot] void TUiLoader::setBlockValidate(bool iBlockBol = true)

设置是否阻塞有效性验证事件发生

block : true=阻塞, false=不阻塞

See also isBlockValidate().

[slot] void TUiLoader::setChanged(bool iChangedBol = true)

See also isChanged().

void TUiLoader::setCreateCallback(QObject *iObj, QObject *(* ) ( QObject * iObj, const QString & iTypeStr, const QVariant & iParam ) iFunc)

[slot] void TUiLoader::setFgColor(const QString &iNameStr, const QString &iColorStr)

[slot] void TUiLoader::setMargin(int iMargin)

See also margin().

[slot] void TUiLoader::setScriptEngine(TScriptEngine *iScriptEnginePtr)

See also scriptEngine().

[slot] void TUiLoader::setSelf(QObject *iObjectPtr)

See also self().

[slot] void TUiLoader::setState(const QString &iNameStr, const QString &iStateStr)

设置名称为iNameStr 的控件的状态

state : 可为{'Hide','Disable','Show'}

[slot] void TUiLoader::setState(QObject *iObjectPtr, const QString &iStateStr)

设置iObjectPtr 的控件的状态

state : 可为{'Hide','Disable','Show'}

[slot] bool TUiLoader::setUiFile(const QString &iFilePathStr)

[slot] bool TUiLoader::setUiItems(const QScriptValue &iUiValScriptValue)

[slot] bool TUiLoader::setUiStr(const QString &iUiStr)

*

设置界面信息字串 uistr 格式如下


  {
        name : 'hbox1', //控件名称
        type : 'HBoxLayout', // 控件类型
        property : { spacing:5, margin:3 }, //控件属性
        pack : {stretch:0, alignment:'Qt::AlignLeft|Qt::AlignTop' }, //控件添加到父控件时参数
        ... : //其它参数
        child : [ //包含的子控件
            {子控件},QH
            {...},
        ]
    }


  {
      name : 'hbox1',
      type : 'HBoxLayout',
      property : { spacing:5, margin:3 },
      pack : {stretch:0, alignment:'Qt::AlignLeft|Qt::AlignTop' },
      child : [
          {
              name : 'label1',
              type : 'Label',
              property : {text:'Label:',buddy:'lineedit1',alignment:'Qt::AlignRight'},
              pack : {stretch:0, alignment:'Qt::AlignLeft|Qt::AlignTop' },
          },
          {
              name : 'lineedit1',
              type : 'LineEdit',
              value : 'Line Edit Value 1',
              property : {},
              pack : {stretch:1},
          },
      ]
   }

void TUiLoader::setValue(const QString &iNameStr, const QScriptValue &iValueScriptValue)

设置名称为name 的控件值为value

void TUiLoader::setValue(QObject *iObjectPtr, const QScriptValue &iValueScriptValue)

设置object 控件值为value

[slot] void TUiLoader::setValue(const QString &iNameStr, const QVariant &iValueVar)

[slot] void TUiLoader::setValue(QObject *iObjectPtr, const QVariant &iValueVar)

[slot] void TUiLoader::triggerFormula(QObject *iObjectPtr = 0)

[slot] QVariantMap TUiLoader::validate(QObject *iObjectPtr = 0, const QString &iMomentStr = QString( "EDIT" ))

[slot] QVariantList TUiLoader::validateAll(const QString &iMomentStr, bool iBlockSetValueBol = false, const QString &iReturnErrTypeStr = "All")

立即对的呢对象进行有效性验证

moment :验证时机

block_setvalue :是否阻止setValue函数,一般在Commit前验证时需设置为yes

[signal] void TUiLoader::validateMessaged(QVariantMap iMsgVarMap)

[signal] void TUiLoader::valueEdited(const QString &iNameStr, QObject *oObject)