-- TOC --
终于还是开始学习QT了,开一篇来记录各种知识点。QT是一个历久弥新的技术框架,源代码用C++,官方提供的Python模块叫PySide。
我开这篇时的最新版本,QT 6.2.4和PySide6。
清华QT镜像:https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/
QT官方文档:https://doc.qt.io/
PySide官方:https://wiki.qt.io/Qt_for_Python
从5.14.2之后,QT官方不再提供可执行安装文件,只提供源代码。
$ sudo apt install qt5-default qttools5-dev-tools
$ mkdir build
$ cd build
$ ../configure -prefix /usr/local/qt6 # 各种错误会在这里提示
$ cmake --build . --parallel 4 # 看机器性能
$ sudo cmake --install .
有一个工具必须要安装,ninja
,否则可能在编译qttranslations的时候,会报错,但是错误信息完全没有可用线索。
编译安装没有Qt Creator(QC)。
看到一个网友分享出来的编译过程,还未自己尝试,总结如下:
准备:
编译:
在Python
中使用PySide,这个没啥可说的,就是Python开发的方式和流程,调用PySide提供的各种库即可。
而C++
开发流程,要使用qmake
生产.pro
文件,再次对.pro文件用qmake,自动生成Makefile
,最后make
。所以,需要自己将每个项目的代码,放到一个独立的文件夹中管理起来。
$ cat qt01.cpp
#include <QWidget>
#include <QApplication>
#include <QLabel>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QWidget *widget = new QWidget;
widget->setWindowTitle("hello qt");
widget->resize(400,300); // in frame size
//widget->setFixedSize(400, 300);
QLabel *label = new QLabel(widget);
label->setText("hello qt...:");
widget->show();
return app.exec();
}
$ qmake -project # get .pro file
$ qmake qt01.pro # get Makefile
$ make # get executable
$ make clean
上面的步骤,还需要补充点细节:
QT += widgets
,这表示此项目用到了widgets
模块,默认已经有了core
和gui
模块;RC_ICONS = <filename.ico>
的方式,给这个app设置一个icon图片;如果使用apt安装qt,qmake已经加入了PATH,如果是自己编译安装的,修改PATH即可,貌似不需要设置其它环境变量,上面的开发流程就可以跑通,make时能够找到正确的头文件和lib库文件。
QWidget是几乎所有窗口部件的父类:
用QWidget构建函数,创建各种类型的窗口。
# first parameter is 0, which means no parent window.
QWidget *widget = new QWidget(0, Qt::Dialog);
QWidget *widget = new QWidget(0, Qt::SplashScreen);
QWidget *widget = new QWidget(0, Qt::Dialog | Qt::FramelessWindowHint);
关于窗口类型和各种属性值,可以在Qt Creator中搜索flags
,有一个Window Flags Example
可以参考。
本文链接:https://cs.pynote.net/sf/202204025/
-- EOF --
-- MORE --