|
文章分类 -
QT
摘要:目录: 1:基本介绍与二进制兼容 2:二进制兼容的设计原则 3:常见c++/qt信息隐藏 4:Q_Q,Q_D介绍 5:定制可编辑treewidget与如何访问基类的Private 6:总结1:基本介绍与二进制兼容 作者虽然一直在linux做开发工作, 对于window平台下,软件的开发模式与稳定性及质量一直不太满意,但是对于window系统在系统兼容方面还是十分佩服的,最近拿着win95下的一款软件在win7上安装了一下,依然运行的很好,这就涉及到了程序兼容的感念,一般可以分为二进制兼容(Binarycompatible),与源代码兼容(sourcecompatible),window的开发接
阅读全文
摘要:Qt 源码中有很多Q_Q和Q_D宏,使用这些宏的地方总会看到有q指针和d指针,查了查KDE文档,大体搞清了其中的机理,欧也!Qt的这些私有数据访问策略还是挺值得借鉴。下面就简单总结一下。 访问器 , `7 {$ C! D6 g( X发了点牢骚,Qt的成员变量get访问器命名实在有点难以接受,get访问器和成员变量名一样,不像Bean的风格,有些编译器甚至通不过。命名的时候就还是加上get好点,习惯成自然,郁闷。 5 q' i- z) F# s6 U( O0 ZD-指针 ) D3 l6 Q: W; P# I0 E7 T* g$ W私有成员总是不可见的,Qt中私有成员不仅仅是简单封装一下,
阅读全文
摘要:QPalette类包含了Qt窗口不见的颜色组(collor group);1.Active组,该组的颜色用户当前活动的(active)窗口,即具有键盘或鼠标焦点的窗口;2.Inactive组,该组用语其他的窗口;3.Disabled组,该组用语窗台为不可用的(disabled)的子窗口部件(不包含窗口).所有Qt窗口部件都拥有一个调色板并使用它绘制自己.通常,活动状态的窗口标题栏为蓝色的,而非活动(inactive)状态的窗口的标题栏显示为灰色的;活动状态的窗口和非活动状态的窗口都可以包含状态为不可用的窗口不见,一个不可用的窗口不见(包括该窗口不见包含的子窗口部件)显示为灰色的,用户是无法同它
阅读全文
摘要:一. 静态库的生成 1. 测试目录: lib 2. 源码文件名: mywindow.h, mywindow.cpp, 类MyWindow继承于QPushButton, 并将文字设置为"I'm in class MyWindow"; 3. 编写项目文件: mywindow.pro 注意两点: TEMPLATE = lib CONFIG += staticlib 4. 生成Makefile: qmake 5. 编译生成静态库libmywindow.a make二. 静态库的使用 1. 测试目录: test 2. 将mywindow.h与libmywindow.a拷贝至t
阅读全文
摘要:void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽]通过立即调用paintEvent()来直接重新绘制窗口部件,如果erase为真,Qt在paintEvent()调用之前擦除区域(x,y,w,h)。如果w是负数,它被width()-x替换,并且如果h是负数,它被height()-y替换。 如果你需要立即重新绘制,建议使用repaint(),比如在动画期间。在绝大多数情况下,update()更好,因为它允许Qt来优化速度并且防止闪烁。警告:如果你在一个函数中调用repaint(),而它自己又被pai
阅读全文
摘要:Skin(表皮) 是制作比较酷的软件界面的有利工具. 一个软件可以同时使用多种Skin 以取得不同的外观, 使同一个软件有截然不同的风格. 用户可以根据自己的喜好选择 不同的风格. 本节介绍使用 Qt 制作 Skin 的方法.软件界面的风格变化可以通过两种机制完成,一种是通过设置主题(Themes),它使用 界面库本身所具有的对界面组件(Components)的控制能力切换显示风格;另外一种是 通过提供不同系列的图片来切换显示界面,即这里所讲的 Skin。制作表皮有几个重要的因素值得考虑:1. 使用无边界的窗口在 XWindow 下,无边界的窗口是指不受窗口管理器管理的边界不规则的窗口。由于不
阅读全文
摘要:VC2005编译的程序)或者提示找不到需要的dll文件,(没有找到 **.dll,因此这个应用程序未能启动)(mingw32编译的程序)有两种方法可以解决这个问题。第一种,静态编译。第二种,同时附上需要的dll文件。静态编译优点,发布简单,单一文件。缺点,库文件很大,更新程序版本不方便。每次升级,都要重新分发所有的内容。。。。。。mingw平台静态编译,在编译Qt的时候,有个configure.exe程序,configure.exe -static -platform win32-g++可以产生静态编译项目文件。然后,mingw32-make sub-src就可以编译出静态库。如果只是用来分发
阅读全文
摘要:关于在windows下部署发布QT程序的总结 收藏 以下包括了部分网上收集的,以及qt帮助里的内容(Deploying an Application on Qt/Windows)首先,打开windows控制台,然后,找到vs安装目录下的bin里,执行 vcvars32.bat 这个脚本。执行完之后,vs需要的所有环境变量就已经设置好了。然后,做下面的操作:我的环境是QT 4.3.3 + mingw32-make部署发布QT程序有两种方法:第一种,静态编译,可生成单一的可执行文件。第二种,动态编译,需同时附上需要的dll文件。一、静态编译1 编译QT。要静态编译,首先要求QT是静态编译过的。在.
阅读全文
摘要:关键特性缩放与旋转QGraphicsView通过QGraphicsView::setMatrix()支持同QPainter一样的仿射变换,通过对一个视图应用变换,你可以很容易地支持普通的导航特性如缩放与旋转。下面是一个例子:class View:;public QGraphicsView{Q_OBJECT//.....public slots:void zoomIn() {scale(1.2,1.2);}void zoomOut() {scale(1/1.2,1/1.2);}void rotateLeft() {rotate(-10);}void rotateRight() {rotate(1
阅读全文
摘要:Graphics View 坐标系统Graphics View基于笛卡尔坐标系。item在场景中的位置与几何形状通过x,y坐标表示。当使用未经变形的视图来观察场景时,场景中的一个单位等于屏幕上的一个像素。在Graphics View中有三个有效的坐标系统:Item坐标系,场景坐标系,视图坐标系。为了简化你的实现,Graphics View提供了方便的函数,允许三个坐标系之间相互映射。当渲染时,Graphics View的场景坐标对应于QPainter的逻辑坐标,视图坐标与设备坐标相同。Item坐标Items位于它们自己的坐标系中。它的坐标都以点(0,0)为中心点,这也是所有变换的中心点。在it
阅读全文
摘要:Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items,又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放。这个柜架也包含一个事件传播结构,对于在scene中的这些items,它具有双精度的交互能力。Items能处理键盘事件,鼠标的按,移动、释放、双击事件,也可以跟踪鼠标移动。Graphics View使用BSP树来提供对item的快速查找,使用这种技术,它可以实时地绘制大规模场景,甚至以百万items计。Graphics View在Qt 4.2中被引用,它替代了它的前辈QCanvas。Graphics View的
阅读全文
摘要:View 类概念在model/view架构中,view从model中获得数据项然后显示给用户。数据显示的方式不必与model提供的表示方式相同,可以与底层存储数据项的数据结构完全不同。内容与显式的分离是通过由QAbstractItemModel提供的标准模型接口,由QAsbstractItemview提供的标准视图接口共同实现的。普遍使用model index来表示数据项。view负责管理从model中读取的数据的外观布局。它们自己可以去渲染每个数据项,也可以利用delegate来既处理渲染又进行编辑。除了显示数据,views也处理数据项的导航,参与有关于数据项选择的部分功能。view也实现一
阅读全文
摘要:Delegate 类概念与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件。一般来讲, view负责把数据展示给用户,也处理用户的输入。为了获得更多的灵性性,交互通过delegagte执行。它既提供输入功能又负责渲染view中的每个数据项。 控制delegates的标准接口在QAbstractItemDelegate类中定义。Delegates通过实现paint()和sizeHint()以达到渲染内容的目的。然而,简单的基于widget的delegates,可以从QItemDelegate子类化,而不是QAbstractItemDelegate,这样可以使用它提供的上
阅读全文
摘要:在views中选择数据项概念用于新的view类中的选择模型比Qt3中的模型有了很大的改进。它为基于model/view架构的选择提供了更为全面的描述。尽管对提供了的views来说,负责操纵选择的标准类已经足以应付,但是你也可以创建特定的选择模型来满足你特殊的需求。关于在view被选择的数据项的信息保持在QItemSelectionModel类的实例中。它也为每个独立的model中的数据项维护model indexes信息,与任何views都关联关系。既然一个model可用于多个views,那么在多个views之间共享选择信息也是可以做到的,这使得多个views可以以一致的方式进行显示。选择由多
阅读全文
摘要:创建新的Models介绍model/view组件之间功能的分离,允许创建model利用现成的views。这也可以使用标准的功能 图形用户接口组件像QListView,QTableView和QTreeView来显示来自各种数据源的数据为。QAbstractListModel类提供了非常灵活的接口,允许数据源以层次结构的形式来管理信息,也允许以某种方式对数据进行插入、删除、修改和存储。它也提供了对拖拽操作的支持。QAbstractListModel与QAbstractTableModel为简单的非层次结构的数据提供了接口,对于比较简单的list和table models来说,这是不错的一个开始点。
阅读全文
摘要:介绍Qt提供了两个标准的models:QStandardItemModel和QDirModel。QStandardItemModel是一个多用途的model,可用于表示list,table,tree views所需要的各种不同的数据结构。这个model也持有数据。QDirModel维护相关的目录内容的信息,它本身不持有数据,仅是对本地文件系统中的文件与目录的描述。QDirModel是一个现成的model,很容易进行配置以用于现存的数据,使用这个model,可以很好地展示如何给一个现成的view设定model,研究如何用model indexes来操纵数据。model与views的搭配使用QLi
阅读全文
摘要:Model类基本概念在model/view构架中,model为view和delegates使用数据提供了标准接口。在Qt中,标准接口QAbstractItemModel类中被定义。不管数据在底层以何种数据结构存储,QAabstractItemModel的子类会以层次结构的形式来表示数据,结构中包含了数据项表。我们按这种约定来访问model中的数据项,但这个约定不会对如何显示这些数据有任何限制。数据发生改变时,model通过信号槽机制来通知关联的views。Model Indexes为了使数据存储与数据访问分开,引入了model index的概念。通过model index,可以引用model中
阅读全文
摘要:介绍Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系。这种结构带来的功能上的分离给了开发人员更大的弹性来定制数据项的表示,它也提供一个标准的model接口,使得更多的数据源可以被这些item view使用。这里对model/view的结构进行了描述,结构中的每个组件都进行了解释,给出了一些例子说明了提供的这些类如何使用。Model/View 结构Model-View-Controller(MVC), 是从Smalltalk发展而来的一种设计模式,常被用于构建用户界面。经典设计模式的著作中有这样的描述:MVC 由三种对象组成。Model是应用程
阅读全文
摘要:我们经常会碰到需要定制界面控件的要求。如果只是在一个平台上,比如说你的控件只需要在Windows上显示,那很好办,Hard code 你的look and feel就可以了。但是如果界面需要在不同平台上显示native的界面风格,比如在Windows上就是Windows的风格,Mac上就是Mac的风格,难道需要为每个平台写不同的代码吗?另外,如果是在Qt这个平台上你需要修改整体的界面风格,同时你的程序也需要跨平台,那你可能需要为每个平台派生该平台下的QStyle对象(Windows上有QWindowsXPStyle,QVistaStyle,Mac上有QMacStyle,等等)。同样修改之后也需
阅读全文
摘要:以下是私有函数的实现: void Plotter::updateRubberBandRegion(){ QRect rect = rubberBandRect.normalized(); update(rect.left(), rect.top(), rect.width(), 1); update(rect.left(), rect.top(), 1, rect.height()); update(rect.left(), rect.bottom(), rect.width(), 1); update(rect.right(), rect.top(), 1, rect.height());}
阅读全文
|