Qt知识总结

Qt知识总结

Global Qt Declarations

<QtGlobal>头文件包含基本的全局声明。
全局声明包含“类型”、“函数”和“宏”。
类型定义一部分是对基本类型的便利定义(它保证了Qt支持的所有平台上的特定的位大小),另一部分涉及Qt的消息处理。函数与生成消息、Qt版本处理、比较和调整对象值有关。最后,一些宏声明能够使程序员将特定于编译器和平台的代码添加到他们的应用程序中,另一些宏能够方便大型操作。

<QtGlobal>头文件提供了一系列宏(Q_CC_),如果使用指定的平台编译应用程序,这些宏将被定义。例如,如果应用程序是使用Forte Developer或Sun Studio c++编译的,则定义Q_CC_SUN宏。头文件还声明了特定平台的一系列宏定义(Q_OS_)。例如,Q_OS_WIN32是为Microsoft Windows定义的。

QWidget

void QWidget::setAttribute ( Qt::WidgetAttribute attribute, bool on = true )

如果on为真,则设置当前Widget的属性;如果on为假,则清除属性

enum Qt::WidgetAttribute

此枚举类型用于指定各种Widget属性。使用QWidget::setAttribute() 设置和清除属性,并使用QWidget::testAttribute() 查询属性,尽管有些属性具有下面提到的特殊便利函数。

Qt::WA_TranslucentBackground
指示widget应该具有透明的背景,即,widget的任何不透明区域都将是透明的,因为widget将有一个alpha通道。设置此标志将导致设置WA_NoSystemBackground。在Windows上,widget还需要设置Qt::FramelessWindowHint窗口标志。
Qt::WA_NoSystemBackground
表明当前widget没有背景,即,当前widget接收到paint事件时背景不会自动重绘。

绘图系统(Paint System)

Qt的绘图系统支持使用相同的API在屏幕和打印设备上绘图。Qt的绘图系统是基于QPainter、QPaintDevice和QPaintEngine类来实现的。
QPainter用于执行绘图操作,QPaintDevice是一个可以使用QPainter在其上绘制的二维空间的抽象,QPaintEngine提供了用来在不同类型的设备上绘制的接口。QPaintEngine类由QPainter和QPaintDevice在内部使用,除非程序员创建自己的设备类型,否则它对应用程序员来说是不可见的。
Qt绘图系统

渲染提示

QList容器

QList是一个提供列表功能的模板类。
QList<T>是Qt的一个通用容器类。它存储一个值列表,并提供基于索引的快速访问以及快速插入和删除。
QList<T>、QLinkedList<T>和QVector<T>提供了类似的功能。概述如下:

  • 在大多数情况下,QList是最合适的类。它的基于索引的API接口比QLinkedList的基于迭代器的API接口更方便,而且由于它在内存中存储的方式,它通常比QVecotr更快。它在可执行文件中的代码更少。
  • 如果您需要一个真正的链表,确保在链表中间插入常量时间,并迭代器到项而不是索引,那么可以使用QLinkedList。
  • 如果希望这些项占据相邻的内存位置,请使用QVector。

Q_DECLARE_METATYPE ( Type )

只要类型Type提供公有的默认构造函数、公有的复制构造函数和公有的析构函数,此宏就会使类型Type为QMetaType所知。在QVariant类中使用自定义的Type类型时就需要用到此宏。
理想情况下,此宏需要放在类或结构体声明的下面,如果这是不可能的,则可以放在一个私有的头文件当中,每次在QVariant中使用该类型时都必须包含该头文件。
添加Q_DECLARE_METATYPE()宏使所有基于模板的函数(包括QVariant)都知道该类型。注意,如果要在队列信号和槽连接,或者在QObject的属性系统中使用该类型,还需要调用qRegisterMetaType()函数,因为这些名称在运行时才能被解析。
此示例显示了Q_DECLARE_METATYPE()宏的典型应用:

struct MyStruct
 {
     int i;
     ...
 };

 Q_DECLARE_METATYPE(MyStruct)

如果MyStruct在名称空间中,Q_DECLARE_METATYPE()必须在名称空间外调用:

namespace MyNamespace
 {
     ...
 }

 Q_DECLARE_METATYPE(MyNamespace::MyStruct)

因为MyStruct现在被QMetaType所知,所以它可以在QVariant中被使用:

MyStruct s;
QVariant var;
var.setValue(s); // copy s into the variant

 ...

 // retrieve the value
 MyStruct s2 = var.value<MyStruct>();

QFileDialog

继承自QDialog。
QFileDialog类提供了一个对话框,以供用户能够选择文件或目录。
QFileDialog类能够使用户遍历文件系统,从而选择一个、多个文件或目录。
创建一个QFileDialog对象最简单的办法就是使用QFileDialog类提供的静态方法。静态方法会调用本地的文件对话框。

 fileName = QFileDialog::getOpenFileName(this,
     tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));

在上面的例子中,使用静态方法创建了一个模态QFileDialog对话框。对话框最初显示/home/jana目录下的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值