qpainter引入哪个头文件|QT中自定的h文件应该存放在哪个目录

① QT中自定的.h文件应该存放在哪个目录

使用 Qt::WindowFlags 可以实现一些不同类型的窗口,如:用 Qt::FramelessWindowHint 来实现无边框窗口,用 Qt::Popup 来实现弹出式的窗口,用 Qt::Tool 来实现工具窗口,用Qt::CustomizeWindowHint 来关闭窗口标题栏以及与 Qt::WindowCloseButton(添加关闭按钮),Qt::WindowMaximumButtonSize(添加最大化按钮)联用来建立只有关闭按钮和最大化按钮的窗口,用 Qt::WindowStaysOnTopHint 使窗口永远在最前端等。 Qt::WidgetAttribute 使窗口支持透明背景以及在关闭后主动销毁。其它一些常用的 Attribute 有:Qt::WA_AcceptDrops 使 widget 支持拖拽操作,Qt::WA_MouseTracking 使 widget 及时响应鼠标移动事件(MouseMoveEvent)。 Qt::setMask() 函数对窗口进行部分区域遮掩来实现各种形状的窗口。部分代码解释:头文件: 1:#ifndef SHAPEDWIDGET_H 2:#define SHAPEDWIDGET_H 3: 4:#include <QWidget> 5:class QPoint; 6:class QPixmap; 7:class ShapedWidget : public QWidget 8: { 9: Q_OBJECT 10:public: 11:explicit ShapedWidget(QWidget *parent = 0); 12: ~ShapedWidget(); 13: 14:private slots: 15:void changeSkin(); 16: 17:protected: 18:void mousePressEvent(QMouseEvent *); 19:void mouseMoveEvent(QMouseEvent *); 20:void paintEvent(QPaintEvent *); 21: 22:private: 23:void initData(); 24:void initVisualComponents(); 25:void setupContextMenu(); 26: 27: QPoint* dragPos_; 28: QPixmap* backgroundPixmap_; 29: }; 30: 31:#endif // SHAPEDWIDGET_H构造: 1: ShapedWidget::ShapedWidget(QWidget *parent) : 2: QWidget(parent, Qt::FramelessWindowHint) //无边框窗体 3: { 4: initData(); //初始化数据,这个demo里面就两个,具体下面有解释 5: initVisualComponents(); //初始化私有可视部件,这个demo里面没有私有的其它部件,所以只做了窗口的一些属性设置 6: setupContextMenu(); //设置右键菜单,分配各种QAction内存空间以及连接SIGNALS和SLOTS 7: setAttribute(Qt::WA_DeleteOnClose); //关闭事件发生后就主动从内存中销毁窗口 8: setAttribute(Qt::WA_TranslucentBackground); //透明背景支持 9: } 拖拽移动窗体(下面有图示): 1:void ShapedWidget::mousePressEvent(QMouseEvent *event) 2: { 3:if(event->button() == Qt::LeftButton) 4: { 5: *dragPos_ = event->globalPos() – frameGeometry().topLeft(); 6: event->accept(); 7: } 8: } 9: 10:void ShapedWidget::mouseMoveEvent(QMouseEvent *event) 11: { 12:if(event->buttons() & Qt::LeftButton) 13: { 14: move(event->globalPos() – *dragPos_); 15: event->accept(); 16: } 17: } 窗口绘制: 1:void ShapedWidget::paintEvent(QPaintEvent *) 2: { 3: QPainter painter(this); 4: painter.fillRect(0, 0, backgroundPixmap_->width(), backgroundPixmap_->height(), *backgroundPixmap_); 5: } 更换皮肤: 1:void ShapedWidget::changeSkin() 2: { 3: QAction* source = qobject_cast<QAction*>(sender()); //获取发送该信号的信号源,并转换对象 4: backgroundPixmap_->load(source->data().toString()); //因为给每个 QAction 赋了图片的地址的字符串 5://所以可以通过 data() 来获取该值,并更新背景图片的内容 6: resize(backgroundPixmap_->width(), backgroundPixmap_->height()); //窗口大小尽可能小

② qt5.4 都添加了什么

一、Qt GUI方面:1、QOpenGLContext已能够适配现有的native context(如EGL,GLX等)。这使得Qt可以跟其他框架交互,例如游戏引擎。2、提高对OpenGL ES 3.0/3.1的支持。如果编译Qt库时打开“-opengl es2”选项,高版本的ES头文件会自动包含在Qt的头文件中。已经通过GLES3的接口支持Vertex array objects、 framebuffer blits 、 multisampling。3、在Windows平台只要编译Qt库时打开 -opengl dynamic选项,那么基于该Qt库的应用程序在运行时可以动态地决定选用哪个OpenGL实现版(opengl32.dll 或者 ANFLE‘s OpenGL ES2.0)。不必为了使用不同的OpenGL而分别编译程序。4、QOpenGLWidget:替代了原来的QGLWidget以及QQuickWidget中相应部分。5、QOpenGLWindow:由于该类的存在,很方便的通过OpenGL将内容绘制到QWindow。6、QRasterWindow:由于该类的存在,很方便的通过基于软件实现的QPainter将内容绘制到QWindow。·「译注:不支持硬件加速的情况下,QPainter使用Raster纯软件的方式绘制图形」7、支持“10位颜色通道”的图像(10-bit per color channels)。尽管Raster引擎内部只使用8位颜色通道,这些图像仍可以被渲染。如果被用作QOpenGLFramebufferObject的内部格式,在OpenGL驱动支持的情况下,OpenGL引擎可以全精度渲染。8、WinRT:加入了对“原生文件对话框”的支持。二、Qt Core1、WinRT:加入对“native settings container”的支持。·「译注:没用过WinRT,不清楚作者指的是什么」2、QStorageInfo:该类可以提供当前挂在的分区或设备的信息。3、QByteArrayList:就像QStringList与QList<QString>,QByteArrayList在QList<QByteArray>之上添加里类似的额外功能。4、QTabletEvent:添加了指示“哪些stylus button被按下”的信息;“rotation与tangentialPressure”在各平台有一致的范围;类似的事件还包括“stylus的类型”或其他在用的工具。为了提供更好的检测机制,改进了手工测试和调试的输出。·「译注:没学习过移动开发,stylus button、tangentialPressure是个what?不理解其含义,翻译可能不正确。」三、Qt Widgets1、改进了基于DPI的widget缩放。四、Qt Quick:1、QQuickRenderControl,可以高效的在framebuffer中渲染QtQuick2画面。然后这些内容既可以被Qt OpenGL渲染器使用,也可以被第三方OpenGL渲染器使用。2、对于ListView的头和尾,引入了覆盖和拖回操作(overlay and pull back)。3、添加了QQuickFontMetrics类,该类提供“QFontMetricsF所含API”的子集。4、添加里QQuickTextMetrics类。5、Android平台现在也支持QQuickWidget。五、Qt Quick Controls1、安卓风格六、Qt Bluetooth1、支持Bluez52、蓝牙低能耗技术预览版(在Bluez4和Bluez5,并仅支持“client side”)七、QPA插件1、Wayland平台插件现在集成到了发布版。2、XCB支持30位深的屏幕(即每颜色通道10位)。3、fontconfig和GTK平台后端可以解析更多的字体设置。4、More categorized logging is in use so that you can enable it in the standard ways (qtlogging.ini etc.) instead of needing to set obscure environment variables or uncomment #defines. The log also provides more complete information, especially about events.·「注:看起来很有用,但我没能理解作者的意思,故附原文。」5、XCB插件已经加入对“大于1的设备像素比(整数型)”的支持。可以通过QT_DEVICE_PIXEL_RATIO环境变量来控制设备像素比。八、Qt WebEngine1、QtWebKitWidgets支持OpenGL 2D加速的画布。2、Qt WebKit模块已经行将就木,未来是Qt WebEngine的时代。Widget和QML中的WebKit API都将被取代。九、Qt WebChannel1、对于WebKit以及其他浏览器引擎,引入一个新的模块来跨越QML/C++与HTML/JS之间的隔阂。十、Qt Windows Extras1、在任务栏中,当划过应用时支持多个缩略图。十一、Qt Sensors1、Windows Phone:添加了电子罗盘和光线感应。十二、Qt SQL1、WPhone:支持sqlite


赞 (0)