21ic电子技术开发论坛

标题: 基于WINDOWS下的MinGW的Qt-4.7.4开发环境建立及测试 [打印本页]

作者: 缥缈九哥    时间: 2011-10-31 14:37
标题: 基于WINDOWS下的MinGW的Qt-4.7.4开发环境建立及测试
1,先去下载IDE
打开网页:http://qt.nokia.com/downloads/qt-creator-binary-for-windows
下载文件:qt-creator-win-opensource-2.3.1.exe
详细连接:http://get.qt.nokia.com/qtcreator/qt-creator-win-opensource-2.3.1.exe
安装目录:C:\Qt\qtcreator-2.3.1
2,再去下载QT库
打开网页:http://qt.nokia.com/downloads/windows-cpp
下载文件:qt-win-opensource-4.7.4-mingw.exe
详细连接:http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.4-mingw.exe
安装目录:C:\Qt\4.7.4
安装过程询问MinGW编译器时填写目录:C:\Qt\qtcreator-2.3.1\mingw
(MinGW下载:http://get.qt.nokia.com/misc/MinGW-gcc440_1.zip,如果需要可单独安装)
3,添加系统环境变量
加入三个路径:
C:\Qt\qtcreator-2.3.1\mingw\bin   (IDE下mingw编译器路径)
C:\Qt\4.7.4\bin            (QT库qmake路径)
C:\Qt\4.7.4\qmake              (QT库qmake库路径)
设置完这些打开IDE就可以编写程序了,不过这个编写出来的程序是动态库的,
如果想要静态库的,就要另外重新编译静态库才行了。
4,建立源码工程
在D:\works\9G-CM0\qt\hello中建立文件:hello.cpp
内容如下:
#include <QApplication>
#include <QTextEdit>
int main(int argv, char **args)
{
    QApplication app(argv, args);
    QTextEdit textEdit;
    textEdit.show();
    return app.exec();
}
5,建立工程配置
打开启动菜单的Qt by Nokia v4.7.4 (MinGW OpenSource)下的Qt 4.7.4 Command Prompt,
进入到目录:D:\works\9G-CM0\qt\hello
运行:qmake -project hello.cpp
      qmake
      make
6,运行程序
打开:D:\works\9G-CM0\qt\hello\debug
双击:hello.exe
代码附件:[attach]83686[/attach]
作者: murex    时间: 2011-11-1 12:29
没玩过qt,9哥的好帖还是得顶,要玩QT的赶紧顶,不懂的咨询9哥
作者: hotpower    时间: 2011-11-1 13:44
还是太巨大,下载了,放放,先还是VC比较正规。
作者: Ryanhsiung    时间: 2011-11-1 16:55
QT不好玩,相对于VC ++,操作性及可读性都不是很好!
    3个月前QT折磨了2周!!!
先前电脑还装了两个QT ,一个4.6 一个4.7
作者: 缥缈九哥    时间: 2011-11-2 23:04
还是想硬啃一下这骨头。。。VC++反正学了10多年,也没有真正明白过一个程序。
作者: 缥缈九哥    时间: 2011-11-2 23:09
菜农,其实qt-creator-win-opensource-2.3.1.exe 是MINGW编译器及图形化IDE,才54.4MB。qt-win-opensource-4.7.4-mingw.exe是库,才328MB。VC++装完MSDN看看也有3个光盘吧。
作者: lxyppc    时间: 2011-11-3 16:30
顶一下,支持正版,选用Qt
作者: hotpower    时间: 2011-11-7 19:21
菜农,其实qt-creator-win-opensource-2.3.1.exe 是MINGW编译器及图形化IDE,才54.4MB。qt-win-opensource-4.7.4-mingw.exe是库,才328MB。VC++装完MSDN看看也有3个光盘吧。
缥缈九哥 发表于 2011-11-2 23:09


哈哈,俺不装MSDN,否则是很巨大
作者: 缥缈九哥    时间: 2011-11-10 23:20
我的QT开发的ISP程序可以 跑了,终于第一次用上非D版本的软件了。。。。哈哈。
作者: mohanwei    时间: 2011-11-10 23:39
用这类软件就找准一个,用熟练……
一个工具而已,研究其底层的实现甚至优化之……对于绝大部分码农来说太遥远了
作者: hotpower    时间: 2011-11-11 11:15
那天俺也玩玩。
作者: 缥缈九哥    时间: 2011-11-16 19:28
学QT,入门还是很简单的。我多年 前尝试学过几次VC++6.0,一个程序也没有做完。也没有能跑起来,现在用QT,做个串口ISP,非常容易做出来了。不说稳定性如何,起码能跑通起来。我主要学习了网上开源的WINCOM,[attach]85650[/attach],还有用到串口库,[attach]85651[/attach],另外,可以查看网页:http://www.yafeilinux.com/ 和博客:http://blog.csdn.net/iamdbl/article/category/275004/1
非常容易就做出如下的例子:[attach]85652[/attach]和[attach]85653[/attach],希望大家也能交流相关的经验。谢谢。
作者: X-Hawk    时间: 2011-11-16 22:14
mingw不错,最新的已经可以支持C++11的 auto关键词和lambda表达式,编程的快乐多了起来

复制
  1. // test_lambda.cpp : Defines the entry point for the console application.
  2. //

  3. //#include "stdafx.h"
  4. // even_lambda.cpp
  5. // compile with: /EHsc
  6. #include <algorithm>
  7. #include <iostream>
  8. #include <vector>
  9. using namespace std;

  10. struct tt
  11. {
  12.         int a;
  13.         int b;
  14. };

  15. void test_auto()
  16. {
  17.    tt vv;
  18.    auto ss = vv;
  19.    printf("%d\n", sizeof(ss));
  20. }

  21. int main()
  22. {
  23.         test_auto();

  24.    // Create a vector object that contains 10 elements.
  25.    vector<int> v;
  26.    for (int i = 0; i < 10; ++i)
  27.    {
  28.       v.push_back(i);
  29.    }

  30.    // Count the number of even numbers in the vector by
  31.    // using the for_each function and a lambda expression.
  32.    int evenCount = 0;
  33.    for_each(v.begin(), v.end(), [&evenCount] (int n) {
  34.       cout << n;

  35.       if (n % 2 == 0)
  36.       {
  37.          cout << " is even " << endl;

  38.          // Increment the counter.
  39.          evenCount++;
  40.       }
  41.       else
  42.       {
  43.          cout << " is odd " << endl;
  44.       }
  45.    });

  46.    // Print the count of even numbers to the console.
  47.    cout << "There are " << evenCount
  48.         << " even numbers in the vector." << endl;
  49. }

作者: tao560532    时间: 2011-11-17 17:42
9G霸气
作者: hotpower    时间: 2011-11-17 17:55
上官和酒鬼都被9g用qt勾魂了
作者: 缥缈九哥    时间: 2011-11-19 17:58
哈哈,我把我的PMISP代码公开一下,希望大家指点,我第一次在PC上用C++做软件,做得丑陋,非常粗糙,很不好意思。很难为情的。电工做软件,就是那么个效果了。希望大家能帮助我提高。先谢谢大家 。[attach]86149[/attach],其中有一段关键协议代码。原厂不让我公开,我还是删除了。不影响程序的其它方面。
作者: 缥缈九哥    时间: 2011-11-20 08:58
没有人帮助我斧正斧正呀?
作者: hotpower    时间: 2011-11-22 13:24
俺有学习的打算,顶起来。
作者: 缥缈九哥    时间: 2011-11-24 23:12
欢迎菜农学习QT。
作者: 缥缈九哥    时间: 2011-12-15 12:19
本帖最后由 缥缈九哥 于 2011-12-15 12:32 编辑

//修改了一段代码 :
        //读取文件BIN文件
        memset(filebuffer,0xff,MAX_FILE_SIZE);
        readfile.open(QIODevice::ReadOnly);
        QDataStream in(&readfile);
        in.setVersion(QDataStream::Qt_4_7);
        in.readRawData(filebuffer, filesize);
        readfile.close();

        ui->textBrowser->clear();
        for(i=0;i<filesize;)
        {
            str += num.sprintf("%08xh:",i);
            for(quint8 j=0;j<16;j++)
            {        
                str +=num.sprintf(" %02X",filebuffer&0xff);
                if(((filebuffer&0xff) != 0xFF )&&((filebuffer&0xff) != 0))
                {filetruesize=i+1;}
                i++;
            }
            str +=" ;\n";
        }
        ui->textBrowser->append(str);

作者: lxyppc    时间: 2011-12-15 14:45
本帖最后由 lxyppc 于 2011-12-15 14:46 编辑

帮不上啥忙,帮你调了一下UI[attach]89658[/attach]
只修改了.ui文件,其它的文件没动
以前的代码在缩放时不能适应窗口大小的变化
缩小与放大窗口
[attach]89659[/attach][attach]89660[/attach]
调整后的代码
缩小与放大窗口
[attach]89661[/attach][attach]89662[/attach]
作者: 缥缈九哥    时间: 2011-12-17 10:42
谢谢。非常感谢。。。
作者: 缥缈九哥    时间: 2011-12-17 10:49
不过你修改的UI文件,感觉位置对齐有点乱了。或者说我的窗口直接禁止伸缩就好了。
作者: mcs8098    时间: 2011-12-20 12:34
支持:loveliness:
作者: 缥缈九哥    时间: 2011-12-29 17:53
不知道为什么,我做的ISP下载速度还是慢。我的等待超时及等待1MS源码如下 :
void sleep(unsigned int msec)
{
    QTime dieTime = QTime::currentTime().addMSecs(msec);
    while( QTime::currentTime() < dieTime )
    QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}

qint8 MainWindow::wait_ack(uint ms ,qint8 ack)
{
    uint i=ms;
    while(i--)
    {
        sleep(1);
        QByteArray temp = myCom->readAll();
        if(!temp.isEmpty())
        {
            char *ch = temp.data();
            if(ch[0]==ack)  {return 1;}
            else
            if(ch[0]==0xff) {return 0;}
        }
    }
    return 0;
}
作者: lxyppc    时间: 2011-12-30 09:45
不知道9G是如何操作COM口的,是同步的方式还是事件驱动的方式
这个wait_ack是运行在UI线程还是工作线程中
个人觉得用自定义的sleep函数不如Qt提供的sleep好用
作者: 缥缈九哥    时间: 2011-12-30 15:01
QT的SLEEP怎么用?我的串口模式? 我的串口就是这么配置的,然后就是读和写了,感觉这串口慢。别人的ISP程序,下载64K才20多秒。我的要30多秒。郁闷中。
   if(myCom->open(QIODevice::ReadWrite)){
        ui->statusBar->showMessage(tr("成功打开串口 ") + portName);
    }else{

        QMessageBox::critical(this, tr("打开失败"), tr("未能打开串口 ") + portName + tr("\n该串口设备不存在或已被占用"), QMessageBox::Ok);
        //关闭串口
        myCom->close();
        delete myCom;
        ui->statusBar->showMessage(tr("关闭串口")+ portName);
        return;
    }

    //设置数据位
    myCom->setDataBits(DATA_8);
    //设置校验
    myCom->setParity(PAR_NONE);
    //设置停止位
    myCom->setStopBits(STOP_1);
    //数据流控制设置
    myCom->setFlowControl(FLOW_OFF);

do_all_again:
    //设置波特率
    myCom->setBaudRate(BAUD9600);
作者: e2zone    时间: 2012-1-4 22:52
牛X!
作者: 缥缈九哥    时间: 2012-1-9 16:56
wait_ack(uint ms ,qint8 ack)
等待时间太长了,为知道怎么改架构才对。
作者: lwslws201    时间: 2012-1-9 19:32
:victory: 顶呀!
作者: 江枫渔火    时间: 2012-1-9 21:10
霸气外露
用QT应该还有个好处,移植性比VC好~
QT本是LINUX世界的玩物~
作者: yulri    时间: 2012-2-9 14:15
先记下了!!
作者: 王紫豪    时间: 2012-3-19 01:04
QT非常不错,支持下
作者: 缥缈九哥    时间: 2012-3-19 10:02
有人告诉一下我如何 才能加快速度吗?这个睡眠太浪费时间了。

void sleep(unsigned int msec)
{
    QTime dieTime = QTime::currentTime().addMSecs(msec);
    while( QTime::currentTime() < dieTime )
    QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
作者: 缥缈九哥    时间: 2012-3-29 22:09
好久没有玩QT了,谁介绍一个开发QT的HID驱动的例子?
作者: 呆板书生    时间: 2012-3-29 22:10
顶,准备学习学习
作者: lxyppc    时间: 2012-3-30 12:17
好久没有玩QT了,谁介绍一个开发QT的HID驱动的例子?
缥缈九哥 发表于 2012-3-29 22:09

HID在Windows下面调用SetupAPI相关的函数就可以了
作者: 缥缈九哥    时间: 2012-3-31 01:24
谢谢lxyppc。
作者: jinjing999    时间: 2012-6-21 16:35
楼主威猛。留下脚印
作者: 缥缈九哥    时间: 2012-10-28 11:28
好久没有玩QT了,差不多忘记了。重新温习一下。
作者: 缥缈九哥    时间: 2013-4-24 11:35
顶起
作者: renxiaolin    时间: 2017-3-13 14:35
这个不支持不可以




欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/) Powered by Discuz! X3.5

作者: lxyppc    时间: 2011-12-30 09:45
不知道9G是如何操作COM口的,是同步的方式还是事件驱动的方式
这个wait_ack是运行在UI线程还是工作线程中
个人觉得用自定义的sleep函数不如Qt提供的sleep好用
作者: 缥缈九哥    时间: 2011-12-30 15:01
QT的SLEEP怎么用?我的串口模式? 我的串口就是这么配置的,然后就是读和写了,感觉这串口慢。别人的ISP程序,下载64K才20多秒。我的要30多秒。郁闷中。
   if(myCom->open(QIODevice::ReadWrite)){
        ui->statusBar->showMessage(tr("成功打开串口 ") + portName);
    }else{

        QMessageBox::critical(this, tr("打开失败"), tr("未能打开串口 ") + portName + tr("\n该串口设备不存在或已被占用"), QMessageBox::Ok);
        //关闭串口
        myCom->close();
        delete myCom;
        ui->statusBar->showMessage(tr("关闭串口")+ portName);
        return;
    }

    //设置数据位
    myCom->setDataBits(DATA_8);
    //设置校验
    myCom->setParity(PAR_NONE);
    //设置停止位
    myCom->setStopBits(STOP_1);
    //数据流控制设置
    myCom->setFlowControl(FLOW_OFF);

do_all_again:
    //设置波特率
    myCom->setBaudRate(BAUD9600);
作者: e2zone    时间: 2012-1-4 22:52
牛X!
作者: 缥缈九哥    时间: 2012-1-9 16:56
wait_ack(uint ms ,qint8 ack)
等待时间太长了,为知道怎么改架构才对。
作者: lwslws201    时间: 2012-1-9 19:32
:victory: 顶呀!
作者: 江枫渔火    时间: 2012-1-9 21:10
霸气外露
用QT应该还有个好处,移植性比VC好~
QT本是LINUX世界的玩物~
作者: yulri    时间: 2012-2-9 14:15
先记下了!!
作者: 王紫豪    时间: 2012-3-19 01:04
QT非常不错,支持下
作者: 缥缈九哥    时间: 2012-3-19 10:02
有人告诉一下我如何 才能加快速度吗?这个睡眠太浪费时间了。

void sleep(unsigned int msec)
{
    QTime dieTime = QTime::currentTime().addMSecs(msec);
    while( QTime::currentTime() < dieTime )
    QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
作者: 缥缈九哥    时间: 2012-3-29 22:09
好久没有玩QT了,谁介绍一个开发QT的HID驱动的例子?
作者: 呆板书生    时间: 2012-3-29 22:10
顶,准备学习学习
作者: lxyppc    时间: 2012-3-30 12:17
好久没有玩QT了,谁介绍一个开发QT的HID驱动的例子?
缥缈九哥 发表于 2012-3-29 22:09

HID在Windows下面调用SetupAPI相关的函数就可以了
作者: 缥缈九哥    时间: 2012-3-31 01:24
谢谢lxyppc。
作者: jinjing999    时间: 2012-6-21 16:35
楼主威猛。留下脚印
作者: 缥缈九哥    时间: 2012-10-28 11:28
好久没有玩QT了,差不多忘记了。重新温习一下。
作者: 缥缈九哥    时间: 2013-4-24 11:35
顶起
作者: renxiaolin    时间: 2017-3-13 14:35
这个不支持不可以




欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/) Powered by Discuz! X3.5