• 独立线程中实现QT GUI


    在网上搜集的资料:

    http://www.qtcentre.org/threads/16552-Starting-QT-GUI-in-a-seperate-Thread
    http://stackoverflow.com/questions/16812602/qt-main-gui-and-other-thread-events-loops
    http://stackoverflow.com/questions/9777911/how-do-i-create-a-window-in-different-qt-threads
    http://stackoverflow.com/questions/16501284/qt-updating-main-window-with-second-thread

    据这些资料看,在非主线程中处理QT或多或少都会有些问题,但我在文档里倒是没有明确找到说QApplication一定要定义在主线程中。

    所以下面尝试了一下:

     1 #include <windows.h>
     2 #include <process.h>    /* _beginthread, _endthread */
     3 #include <stdlib.h>
     4 #include <QtGui/QApplication>
     5 #include <QtGui/QPushButton>
     6 
     7 void initUI(void* dummy) {
     8     int argc = 0;
     9     QApplication app(argc, NULL);
    10     QPushButton button("Hello, world");
    11     button.show();
    12     app.exec();
    13     printf("gui thread dead.
    ");
    14     _endthread();
    15 }
    16 
    17 int main(int argc, char** argv)
    18 {
    19     /* Launch gui thread. */
    20     _beginthread( initUI, 0, NULL );
    21 
    22     /* Do something with main thread */
    23     while(1){
    24         printf("tick ...
    ");
    25         
    26         Sleep(1000);
    27     }
    28 }

    运行结果来看似乎并没有多少问题:

    后续再看。

    ----------------附:PYQT编译步骤----------------

    1. 下载QT library for windows并安装(C:/QT/4.8.5),并将C:/QT/4.8.5/bin目录添加到系统环境变量中(后续编译依赖qt的qmake):
    http://download.qt-project.org/official_releases/qt/4.8/4.8.5/qt-win-opensource-4.8.5-vs2010.exe

    2. 下载PYQT source package并解压(C:/PyQt-win-gpl-4.10.3)
    http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.10.3/PyQt-win-gpl-4.10.3.zip

    3. 下载SIP source package并解压(C:/sip-4.15.4)
    http://sourceforge.net/projects/pyqt/files/sip/sip-4.15.4/sip-4.15.4.zip

    4. 在VS2010的命令提示行环境下执行(编译sip并安装pyd至python目录):

    1 cd c:/sip-4.15.4
    2 python configure.py
    3 nmake
    4 nmake install

    5. 在VS2010的命令提示行环境下执行(编译pyqt):

    1 cd c:/pyqt-win-gpl-4.10.3
    2 python configure-np.py
    3 nmake
    4 nmake install

    6. 在python解释器中测试:

    >>> import sipconfig         #测试sip
    >>> from PyQt4.QT import *   #测试pyqt
  • 相关阅读:
    JSP三大指令是什么?
    jsp和servlet的区别、共同点、各自应用的范围
    1.说一说Servlet的生命周期?
    .查询姓“李”的老师的个数;
    jquery 主要内容有两大部分:
    jQuery的优势:
    JDBC的PreparedStatement是什么?
    execute,executeQuery,executeUpdate的区别是什么?
    String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的
    数据维护不求人,一招搞定增删改
  • 原文地址:https://www.cnblogs.com/konlil/p/3525425.html
Copyright © 2020-2023  润新知