|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本章节使用的资料已经放到了开发板网盘资料中,路径为:11_Linux 系统开发进阶\94_章节使用资料。
( d# H" S$ `: v% y# e本章节介绍在 yocto Qt5 文件系统中使用程序旋转 Qt 窗口。在嵌入式中有时候需要竖屏显示,有时候不能修改 Qt 源码,那么可以在 Qt 应用程序中将窗口旋转 90 度。方法是将主窗口放入到 QGraphicsScene 中,然后旋转 90 度,通过 QGraphicsView 显示。子窗口通过指针来访问父窗口达到旋转的效果。9 t6 t% W3 B: c4 p- M
例程在文档同一目录下,实现的功能是点击主窗口工具栏的打开文件,然后弹出子窗口选择文件(选择普通文件),选择完点击确认,子窗口关闭,主窗口的 textEdit 组件会显示文件内容。2 V$ o, O/ g; Y7 Z8 {( s
在 main.cpp 中修改主窗口的显示过程,Rotate 为主窗口类:( I# `3 s& r+ f3 W
int main(int argc, char *argv[])
q3 y. Q6 b5 R1 h6 Z5 K( M8 F{& A; d6 B8 ^. L: G' ?! B6 x
QApplication a(argc, argv);2 z7 V5 x: `+ V# i% B! y
Rotate w;//主窗口
2 R& _2 S/ n7 f2 y/*# ]# @/ [; d8 m# Z/ w( @6 X
* 旋转主窗口
; u; y8 I2 M7 [ Q9 S0 ]) q# K*/3 x# \; b( K% S( @3 G. \; Y
QGraphicsScene *scene = new QGraphicsScene;
/ k, A: M( `& X. ]7 {0 G$ IQGraphicsProxyWidget *gpw = scene->addWidget(&w);4 |9 ^$ U5 Z0 o3 @' C# s# ]
gpw->setRotation(90);//旋转 90 度
; ]5 m# h G; _3 ?: A6 o6 g: |5 mQGraphicsView *view = new QGraphicsView(scene);
/ K& z/ [- V3 ?+ P# {8 {4 Dview->showFullScreen();//全屏显示( `+ h# b+ n3 {& T, s& P" a
return a.exec();
$ O# I: H& {' M; ?4 W# a}" d! g: h$ w- A6 } M7 E' Y, t9 d
添加完后如图 94.1:
7 S& B s' Z- e/ {4 j* q 0 ]0 r+ p# L' s8 ~
子窗口通过“this”指针指定父窗口将所有项目界面加载到 QGraphicsScene,创建子窗口对象时代码如下:3 X' K* }; C; V7 h: V1 y
void Rotate::showOpenFile()
" O5 d' @2 V+ G3 P0 c7 e{& _: `, m! h) w# ` [
gf = new getfile(this);//子窗口调用 scene
& t r, C) [9 Kgf->show();8 [2 q- r* v& @. a+ j: j) j
connect(gf,SIGNAL(OK_signal()),this,SLOT(showText()));//接收子窗口发送过来的信号
8 ]2 X6 Q1 M# m# y6 N! ?}0 v) R/ P! v% e( r
完成后如图 94.2:0 s( d6 ]5 V1 U7 G5 i
![]()
/ A/ ?3 A/ b! a7 d, O主窗口效果如图 94.3:( K8 r) x4 `$ R- Z' m
+ K& C! u' a8 B/ F; m
点击工具栏的打开文件,弹出子窗口,在子窗口中选择文件名,& C1 y3 W3 q. p- g3 k+ J4 ~5 Z
% h6 k& ~% [! b) V
显示出文件内容:8 E. [' K+ o$ H: v
![]()
* N! y# ^" A$ e' y. o v7 u8 U在开发板上运行时要根据屏幕大小来调整窗口尺寸。使用此方法一定要把工程中所有的窗口都放到Scene 中,才能达到旋转的效果。
2 H: i8 M+ {# N% g![]()
5 i5 l5 j3 ~! @! Q![]()
! b. Y( E3 n$ B5 P9 r; @0 a![]()
* A3 ] B5 n# S2 g8 ]
. B9 Y& M* _) U* G' v- @ |
|