您好,欢迎来到抵帆知识网。
搜索
您的当前位置:首页QT开发总结

QT开发总结

来源:抵帆知识网
QT开发总结

QT开发程序效率还是很⾼的,特别是⽤了QT creator 2.2.1。这⼏天⽤QT开发程序,似乎找到了⽤C++开发程序的感觉,以前⽤c++写程序就像是在⾃虐,就连string、time等基本类型都得东拼西凑的找类库,MFC的⽂档/视也搞得我晕头转向,关键是⽤着别扭,可能是WinForms⽤习惯了,再说好像也过时了,开发⼯具⽀持也不咋地!(VC的粉丝不要骂我),学了⼀段时间WTL,感觉只适合⾼⼿使⽤,纯粹浪费感情!QT对于像我这样长期以.net混饭吃的程序员,快速切换到c ++编程再合适不过了。最起码,⾃⼰的编程想法很快就能实现!⽽不⽤先A必B,B必C,C必D... 痛苦啊!也可能是我没找到MFC和WTL还有VC的应⽤场景?

反正,还是QT符合我的想法:,为我快速编个⼩程序提供了良好的基础设施。当然了C#和C++的很多概念是不同的,现在把这⼏天的编程经验总结⼀下:

1. QProcess类:有⼀点与.net的Process很不同,那就是:QProcess不能取得当前进程,也就是没有GetCurrentProcess⽅法。造成的直接结果就是如果你想Kill掉⾃⼰,只能通过winAPI。我想可能QT是为了跨平台的考虑。#include void killMe(){

DWORD dwProcessID = ::GetCurrentProcessId(); //获取当前进程ID号

HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessID); //根据进程ID返回对象句柄 ::TerminateProcess(hProcess,0); //根据对象句柄结束进程 CloseHandle(hProcess);

}

2. Signal 和 Slot:相当于C#中的事件和事件处理程序,使⽤connet连接信号和槽。connect(setAction,SIGNAL(triggered()),this,SLOT(Settings()));

QT⽂档中的事件Event,通过再⼦类中重写来⾃定义⾏为。此事件⾮彼事件,例如重写窗体的close事件:void MainWindow::closeEvent(QCloseEvent *){

iProcess::killMe();}

3. ⼀定要尝试⼀下QScriptEngine类:嵌⼊JavaScript脚本是如此的简单。嵌⼊脚本的好处当然是提⾼程序的灵活性,还有⼀个好处是提⾼开发效率:C++的编译速度明显不如C#快,嵌⼊个脚本就不⼀样了,脚本不⽤编译啊! QScriptEngine* engine=new QScriptEngine;

QString basePath=QCoreApplication::applicationDirPath(); QFile file(basePath+\"\\\est.js\");

if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {

QMessageBox::information(this,\"\",\"open failed\"); return; }

QByteArray bytes= file.readAll(); QString scripts(bytes); engine->evaluate(scripts);

if(engine->hasUncaughtException()) {

QMessageBox::information(this,\"error\",engine->uncaughtException().toString()); }

file.close();

只要修改test.js就可以很容易的改变我的程序逻辑。如果脚本要与主程序交互: QScriptValue mainWin = engine->newQObject(this); engine->globalObject().setProperty(\"host\", mainWin); test.js中就可以直接访问host了。

4. 程序中要在注册表中存些设置信息,就直接⽤QSettings类。

5. QThread类:不能Sleep,只好⼜⽤API。以下代码不是很准确的延迟,但并不堵塞界⾯线程执⾏。#include

void sleep(int svalue){

QTime dieTime = QTime::currentTime().addSecs(svalue); while( QTime::currentTime() < dieTime )

{

::Sleep(100);

QCoreApplication::processEvents(QEventLoop::AllEvents, 100); }}

  6. Debug版本内存占⽤较多,请⽤Release版本。多⽤QT Quick写界⾯,类似于WPF。特此总结,因为编完这个⼩程序可能⼜要很久不⽤QT了!

特别推荐Qt开发的windows⼩程序实例源代码:

⽣成的程序全部打包只有4M多,⽤户解压后可以直接运⾏。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务