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) |
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) |
- 3 signals inherited from QWidget
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) |
Additional Inherited Members
- 6 properties inherited from QFrame
- 58 properties inherited from QWidget
- 1 protected slot inherited from QWidget
Detailed Description
通过JavaScript生成动态界面
并在QUiLoader的基础上集成了数据有效性验证,快速设置或获取界面数据等功能. 下例是一个简单的使用TUiLoader的例子,可以生成如下图所示的界面.
#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