分类存档: QT

QT 2D绘图全面解析

Qt4中的2D绘图部分称为Arthur绘图系统.它由3个类支撑整个框架,QPainter,QPainterDevice和QPainterEngine.QPainter用来执行具体的绘图相关操作 如画点,画线,填充,变换,alpha通道等。QPainterDevice是QPainter用来绘图的绘图设备,Qt中有几种预定义的绘图设备,如QWidget,QPixamp,QPrinter等.他们都从QPaintDevice继承。QPaintEngine类提供了不同类型设备的接口,QPaintEngine对程序员不透明,由QPainter,QPaintDevice类与其进行交互。

从Qt4.2开始,Graphics View框架取代了QCanvas,QGraphics View框架使用了MVC模式,适合对大量2D图元的管理,Grphics View框架中,场景(scene),存储了图形数据,它通过视图(view)以多种表现形式,每个图元(item)可以单独进行控制.Arthur绘图基础,在Arthur绘图框架中的基本绘图元素是画笔,画刷。QPainter类具有GUI程序需要的绝大多数函数,能够绘制基本图形(点,线,矩形,多边形等)以及复杂的图形(如绘图路径).使用绘图路径(QPaintPath)的优点是复杂形状的图形之用生成一次,以后再使用的时候是需要调用QPainter::drawPath()就可以了。QPainterPath对象可以用来填充,绘制轮廓。线和轮廓都可以用画笔(QPen)进行绘制,画刷(QBrush)进行填充。画笔定义了风格(线形),宽度,笔尖画刷以及端点是如何绘制的(cap-style),端点的连接方式(join-style).画刷用来填充画笔绘制的图形,可以定制不同的填充模式和颜色的画刷。当绘制文字时,字体使用QFont类定义,Qt使用指定字体的属性,如果没有匹配的字体,Qt将使用最接近的字体。字体属性可以通过QFontInfo来获取。字体的度量(measurement)使用QFontMetrics类来获取。QFontDatabase类可以获得底层窗口系统所有可用的字体.

继续阅读 »

Qt下的模态和非模态对话框

Qt下的模态和非模态对话框

模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在。又有叫法是称为模式对话框,无模式对话框等。 所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。对于非模态对话框,当被打开时,用户既可选择和 该对话框进行交互,也可以选择同应用程序的其他窗口交互。

在Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框;另一种是使用show()方法,它使得对话框既可以模态显示,也可以非模态显示,决定它是模态还是非模态的是对话框的modal属性。

在Qt中,Qt的模态与非模态对话框选择是通过其属性modal来确定的。我们来看看modal属性,其定义如下:

modal : bool默认情况下,对话框的该属性值是false,这时通过show()方法显示的对话框就是非模态的。而如果将该属性值设置为true,就设置成了模 态对话框,其作用于把QWidget::windowModality属性设置为Qt::ApplicationModal。

继续阅读 »

MeeGo闪亮IDF 移动终端操作系统迎来激战

比特网(chinabyte)4月14日消息 落下帷幕的IDF大会上,英特尔与诺基亚推出的MeeGo操作系统成了本次大会的焦点。业界人士认为,随着移动终端的普及应用,未来操作系统的竞争将日趋激烈。

  MeeGo是英特尔与诺基亚合作推出的主要针对移动设备的免费操作系统,该操作系统可在智能手机、笔记本电脑和电视等多种电子设备上运行。英特尔公司高级副总裁兼软件与服务事业部总经理詹睿妮在会上透露,基于MeeGo操作系统的产品将于今年下半年推出。此外,英特尔也推出了全新的应用发布模式AppUp。计划推出的设备包括了上网本和平板电脑等。

继续阅读 »

QDataTimeEdit 使用

今天终于写好了点餐系统的会员登记模块了!
也熟悉了几个不常用的控件。
QDateTimeEdit *dateEdit = new QDateTimeEdit(QDate::currentDate()); //设置为当前时间
 dateEdit->setMinimumDate(QDate::currentDate().addDays(-365));  //设置每次最小更换时间
 dateEdit->setMaximumDate(QDate::currentDate().addDays(365));   //设置每次最大更换时间
 dateEdit->setDisplayFormat("yyyy.MM.dd");   //显示年月日
 继续阅读 »

Meego:为什么是QT?

有不少朋友在问,Meego从Moblin演变过来为什么变成了QT而不用以前的GTK/clutter了?难道只是因为跟nokia的合作吗?

当然跟nokia的合作是一个重要的原因,但QT最为一个Linux最重要的开发平台Meego的选取也是有一定的原因的:

1. 首先QT是一个有广泛支持的平台,有不少的发行版已经首选KDE (基于QT的窗口管理器),例如Kubuntu, OpenSuse,等等,而且相比较Gnome, 这里引用一段话,但不表示我完全认同 8 )

继续阅读 »