设计模式(1)-模板模式(Template) (三)

2014-11-24 11:48:37 · 作者: · 浏览: 10
cancel()
* Type : slot
* Func : cancel login
* In : Null
* Out : Null
*/
void QLogin::cancel()
{
managerEdit->clear();
passwdEdit->clear();
close();
}

main.cpp

[html] view plaincopyprint #include
#include "login.h"

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

QLogin login;
login.show();
return app.exec();
}
#include
#include "login.h"

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

QLogin login;
login.show();
return app.exec();
}
【分析】

1 改动后,省去了繁杂的调用步骤,只要采用

[html] view plaincopyprint QLineEditWithIM *managerEdit;
managerEdit = new QLineEditWithIM;
QLineEditWithIM *managerEdit;
managerEdit = new QLineEditWithIM;

替代

[html] view plaincopyprint QLineEdit *managerEdit;
managerEdit = new QLineEdit;
QLineEdit *managerEdit;
managerEdit = new QLineEdit;

在鼠标单击时,就可以弹出输入法了。

2 去掉qlineeditwithim.cpp中注释,即改为

[html] view plaincopyprint #include "qlineeditwithim.h"

QLineEditWithIM::QLineEditWithIM()
{
#ifdef Q_WS_QWS
im = new InputMethod;
installEventFilter(im);
connect(im->keyboard,SIGNAL(setvalue(QString)),this,SLOT(setText(QString)));
#endif
} www.2cto.com
#include "qlineeditwithim.h"

QLineEditWithIM::QLineEditWithIM()
{
#ifdef Q_WS_QWS
im = new InputMethod;
installEventFilter(im);
connect(im->keyboard,SIGNAL(setvalue(QString)),this,SLOT(setText(QString)));
#endif
}

在嵌入式版本中将弹出输入法,其他版本不会弹出输入法。

3 QLineEditWithIM重用了QLineEdit的方法,并增加了嵌入式输入法功能。而且没有增加任何调用开销。

转载请标明出处,仅供学习交流,勿用于商业目的

Copyright @ http://blog.csdn.net/tandesir

作者:tandesir