要用到图形界面,觉得MFC out了,所以学习用QT开发吧
选择
Qt Widgets是是传统的面向桌面的UI模型,知乎上好像较为认可,不看好QML(原因:第三方库多?)
QT Quick是QML的标准库,我百度了下觉得QML和QT Quick的关系像是C++和STL。这款更重视UI,加入了JS来开发界面。(QT未来趋势??)
stackoverflow上如是说:如果Qt Quick支持你想要的功能,就用它来搞。如果你想构建全功能的桌面版本,Qt Widget可能是你最好的选择。
参照《QtCreator快速入门》学习
开始
windows下图标 RC_ICONS = myico.ico(MAC下我没整出来…也不报错…)
添加.ui文件,查看ui_xxx.h 发现具体UI设计由Ui_Xxx类实现,Ui::Xxx类继承他,具体撸代码时创建Ui::Xxx对象就行了。
窗口
QWidget
QWidget类是所有用户界面对象的基类
QWidget继承自QObject类和QPaintDevice类
QObject类是所有支持Qt对象模型(Qt Object Model)的Qt对象的的基类
QPaintDevice类是所有可以绘制的对象的基类
窗口类型
explicit QWidget(QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowFlags())
后者为:QFlags<WindowType>WindowFlags,
WindowType是一个窗口类型枚举
窗口几何布局
一图胜千言,就是API分带边框和不带边框取值
包含框架:x()、y()、frameGeometry()、pos()和move()等函数;
不包含框架:geometry()、width()、height()、rect()和size()等函数。
调试
第一,可以使用断点调试,风格类似VS
第二,包含<QDebug>(这个有点像cout)
对话框
对话框分模态和非模态(老生常谈)
模态: exec()
非模态 show() //可以通过setModal()和setWindowModality()变模态(显示上的模态,代码继续执行了)
信号/槽机制
QObject::connect(...)
标准对话框:颜色、 文件、 字体、、输入、消息、进度、错误信息 、向导(知道有哪些就得了)
常用窗口部件:
QFrame类是带有边框的部件的基类
QAbstractButton类是按钮部件的抽象基类
行编辑器QLineEdit部件是一个单行的文本编辑器
QAbstractSpinBox类是一个抽象基类,它提供了一个数值设定框和一个行编辑器来显示设定值。
QAbstractSlider类提供了一个区间内的整数值,它有一个滑块,可以定位到一个整数区间的任意值。