C++Qt代码转PyQt代码指南

时间:2014-10-29 01:47:59   收藏:0   阅读:1634

C++Qt代码转PyQt代码指南

Table of Contents

1 举个栗子

#include <QApplication>

#include <QtGui>

#include <QtCore>

 

C++代码

int main(int argc, char *argv[])  

{  

   QApplication app(argc, argv);  

   QSplitter *splitter = new QSplitter;//QSplitter用户分割两个widget  

   QFileSystemModel *model = new QFileSystemModel;  

   model->setRootPath(QDir::currentPath());  

   QTreeView *tree = new QTreeView(splitter);  

   tree->setModel(model); //为视图设置模型  

   tree->setRootIndex(model->index(QDir::currentPath()));  

   QListView *list = new QListView(splitter);  

   list->setModel(model);   

   list->setRootIndex(model->index(QDir::currentPath()));  

   splitter->setWindowTitle("Two views onto the same file system model");  

   splitter->show();  

   return app.exec();  

}  

from PyQt4 import QtGui

from PyQt4 import QtCore

import sys

 

转换后

def main(argv):

    app = QtGui.QApplication(argv)

    splitter = QtGui.QSplitter()

    model = QtGui.QFileSystemModel()

    model.setRootPath(QtCore.QDir.currentPath())

    tree = QtGui.QTreeView(splitter)

    tree.setModel(model)

    tree.setRootIndex(model.index(QtCore.QDir.currentPath()))

    qlv_list = QtGui.QListView(splitter)

    qlv_list.setModel(model)

    qlv_list.setRootIndex(model.index(QtCore.QDir.currentPath()))

    splitter.setWindowTitle("Two views onto the same file system model")

    splitter.show()

    return app.exec_()

 

if __name__ == ‘__main__‘:

    main(sys.argv)

运行如图 

2 变量生存周期

是故,使用C++/Qt编程时,几乎所有的QObject实例对象构造时,都会记得加上其parent的引用以防止内存泄漏;同样,PyQt中依然 如此,倒不是防止其内存泄漏,因为Python会根据引用计数自动对类实例进行管理,一旦变量的超出其作用域而没有任何引用时会被自动析构,但生存于Qt 树模型中的对象却能幸免,见以下代码 

3 工具使用

IPython的自动提示与Python的自省 

4 备忘清单

Date: 2013-12-04T14:39+0800

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!