Qt Lighthouse学习(三)

Qt Lighthouse学习(三),第1张

概述想不出好的名字,还是继续用lighthouse这个名字吧,毕竟和Qt Lighthouse学习(二)内容相连。 注:本文内容基于现阶段的Qt5源码,等Qt5正式发布时,本文的内容可能不再适用了。 2011.09.11 QPA插件加载 Qt5所有的gui程序都将依赖一个 qpa 插件(QGuiApplication初始化时将会加载qpa插件)。 程序如何知道去哪儿找插件呢? 又如何知道加载哪一个插件

想不出好的名字,还是继续用lighthouse这个名字吧,毕竟和Qt Lighthouse学习(二)内容相连。

注:本文内容基于现阶段的Qt5源码,等Qt5正式发布时,本文的内容可能不再适用了。 2011.09.11

QPA插件加载

Qt5所有的gui程序都将依赖一个 qpa 插件(QGuiApplication初始化时将会加载qpa插件)。

程序如何知道去哪儿找插件呢? 又如何知道加载哪一个插件呢? 路径

命令行参数:-platformpluginpath

环境变量: QT_QPA_PLATFORM_PLUGIN_PATH

常规插件路径(QCoreApplication::libraryPaths())下的platform@H_404_72@子目录

恩,常规路径很复杂,详见:Qt 插件路径(笔记)

QlibraryInfo::location(QlibraryInfo::PluginsPath)

文件:/qt/etc/qt.conf中设置的路径 环境变量:QT_PLUGIN_PATH 编译Qt时生成的 src/corelib/global/config.cpp 中写死的路径 可执行程序自身所在路径 可执行程序路径下qt.conf设置的路径 手动调用 QCoreApplication::addlibraryPath()设置的路径 环境变量QT_QPA_PLATFORM_PLUGIN_PATH设置的路径以及-platformpluginpath指定的路径 插件名

命令行参数:-platform

环境变量:QT_QPA_PLATFORM

编译Qt源码时定义的宏:QT_QPA_DEFAulT_PLATFORM_name

默认插件名: MAC 平台下的 “cocoa” WIN 平台下的 “windows” 其他 平台下 "xcb" QWindow

QWidget和QApplication都从QtGui模块中移走了(移到了QtWidgets模块)。那么如何使用QtGui模块写一个最简单的界面呢?

需要使用 QWindow 和 QGuiApplication,一个简单的例子:

Widget.h

#ifndef WINDOW_H#define WINDOW_H#include <QtGui/QWindow>class Window : public QWindow{    Q_OBJECTpublic:    Window(QWindow *parent = 0);protected:    voID exposeEvent(QExposeEvent *);    voID resizeEvent(QResizeEvent *);private:    voID render();    QbackingStore *m_backingStore;};#endif // WINDOW_H
window.cpp

@H_71_301@

#include "window.h"#include <QtGui/QPainter>#include <QtGui/QbackingStore>Window::Window(QWindow *parent)    : QWindow(parent){    setGeometry(QRect(10,10,640,480));    m_backingStore = new QbackingStore(this);}voID Window::exposeEvent(QExposeEvent *){    render();}voID Window::resizeEvent(QResizeEvent *){    render();}voID Window::render(){    QRect rect(QPoint(),geometry().size());    m_backingStore->resize(rect.size());    m_backingStore->beginPaint(rect);@H_363_403@    QPainter p(m_backingStore->paintDevice());    p.drawRect(rect);    m_backingStore->endPaint();    m_backingStore->flush(rect);}
main.cpp

#include <QtGui/QGuiApplication>#include "window.h"int main(int argc,char *argv[]){    QGuiApplication a(argc,argv);    Window w;    w.show();    return a.exec();}
总结

以上是内存溢出为你收集整理的Qt Lighthouse学习(三)全部内容,希望文章能够帮你解决Qt Lighthouse学习(三)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1065660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存