Qt
大约 2 分钟
Qt
目录
知识点
Qt窗口坐标系
- 左上角是原点 (0,0),水平往右为x正方向,垂直往下为y正方向
- 对于嵌套窗口,其坐标是相对于父窗口来说的
Qt宏
Qt常用宏
Q_OBJECT,Qt元对象系统
QT_BEGIN_NAMESPACE,命名空间
QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE
QT_FORWARD_DECLARE_CLASS,相当于class 类名,和头文件#include作用类似
QT_FORWARD_DECLARE_CLASS(QAction) QT_FORWARD_DECLARE_CLASS(QActionGroup) QT_FORWARD_DECLARE_CLASS(QMenu) QT_FORWARD_DECLARE_CLASS(QSpinBox)
Q_OBJECT宏 & Qt元对象系统
Q_OBJECT宏
- 作用:是启动
Qt5元对象系统
的一些特性(如支持信号和槽等)
Qt元对象系统
- 作用
- 对象间的通信机制(信号和槽)
- 运行时类型信息
- 动态属性系统的支持
- 简概
- 是标准C++的一个扩展,使Qt能更好地实现GUI图形用户界面编程
- 不支持C++模板,尽管该模板扩展了标准C++的功能
- 基于
- 基类QObject:任何需要元对象系统功能的类,必须继承自QObejct
- Q_OBJECT宏:必须出现在类的私有声明区,用于启动元对象的特性
- 元对象编译器(Mete-Object Compiler,moc):为QObject子类实现元对象特性提供代码实现
一些比较奇怪的用法
#ifndef QT_NO_CONTEXTMENU
void contextMenuEvent(QContextMenuEvent *event) override;
#endif // QT_NO_CONTEXTMENU
#ifdef Q_OS_MAC
"<p>On OS X, the \"Black\" dock widget has been created as a "
"<em>Drawer</em>, which is a special kind of QDockWidget.</p>"
#endif
#ifdef Q_OS_MACOS
setUnifiedTitleAndToolBarOnMac(true);
#endif
Qt常用算法
aAbs()
,返回绝对值qMax(,)
,返回最大值qRound()
,返回圆整值qSwap(,)
,交换两数
QT的foreach、C++11的范围for、容器循环
Qt提供的替代C++中for循环的关键字
foreach(int, QList<int>)
{
// process
}
不过话说C++11本来就有基于范围for循环,可用于数组和容器赖
for (double x : prices) cout << x << std::endl; // 只能输出
for (double &x : prices) x = x*0.8; // 可以改变数组的内容
Qt构建、运行、qmake的区别
- 区别
- qmake:根据实际环境创建项目文件.pro 并且运行qmake生成适当的Makefile
- 构建:构建是增量编译,只编译有变化部分
- 重新构建:是把所有部分都重新编译
- 运行:有改动则根据已有的Makefile进行编译,执行;构建和重新构建时如果没有Makefile,会根据.pro文件等生成Makefile后再编译
- 总结
- 所以运行顺序应该是:qmake - 构建 - 运行