|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本章节使用的资料已经放到了开发板网盘资料中,路径为:11_Linux 系统开发进阶\94_章节使用资料。
$ ]7 V5 n5 T: \$ o; n% F: S" @本章节介绍在 yocto Qt5 文件系统中使用程序旋转 Qt 窗口。在嵌入式中有时候需要竖屏显示,有时候& a9 T, a2 @; N7 `6 r1 D$ |7 `
不能修改 Qt 源码,那么可以在 Qt 应用程序中将窗口旋转 90 度。方法是将主窗口放入到 QGraphicsScene 中,1 A7 d2 C3 b2 z
然后旋转 90 度,通过 QGraphicsView 显示。子窗口通过指针来访问父窗口达到旋转的效果。# r. h9 E" r. g: r2 l
例程在文档同一目录下,实现的功能是点击主窗口工具栏的打开文件,然后弹出子窗口选择文件(选5 Q, F: M# o9 _3 I ^
择普通文件),选择完点击确认,子窗口关闭,主窗口的 textEdit 组件会显示文件内容。
" B6 o( v2 e) O在 main.cpp 中修改主窗口的显示过程,Rotate 为主窗口类:
' {. {1 P, S. `; f: L9 Cint main(int argc, char *argv[])6 i4 L$ E w# A n& Q; K
{! U. Q: n$ ]. M/ c0 J
QApplication a(argc, argv);
: b3 g( F0 b# `Rotate w;//主窗口# F/ e H8 e( X
/*
5 X* g) |/ ^, h# E! k6 E* 旋转主窗口% p$ E0 q$ Q. P7 i
*/; X, M0 K( W% m+ J; P. C
QGraphicsScene *scene = new QGraphicsScene;
+ F5 ?, G* z: m/ `: N* v/ lQGraphicsProxyWidget *gpw = scene->addWidget(&w);
9 N0 @$ Y3 z4 zgpw->setRotation(90);//旋转 90 度
! m2 i" w5 S: gQGraphicsView *view = new QGraphicsView(scene);1 H9 A* O* C- W% w- y9 A2 @2 A; t( j/ B
view->showFullScreen();//全屏显示3 @8 A) p p2 i8 b6 d" w
return a.exec();5 H4 [$ q5 B+ q, ~5 b4 S
}
2 A6 e( c" p" t! ~$ e) Z q添加完后如图 94.1:" K k5 B8 ]) d0 l- ?
![]()
# g8 K0 [- \9 O; t- u1 {子窗口通过“this”指针指定父窗口将所有项目界面加载到 QGraphicsScene,创建子窗口对象时代码如! S' @/ |0 d' I \
下:+ R Q# k: H; y0 n9 T
void Rotate::showOpenFile()8 \+ _. o0 m( ^7 j) ^6 @! l
{& N, n" W7 X J" p3 |
gf = new getfile(this);//子窗口调用 scene
/ Z g+ y( K- Q J* S; a" W/ |gf->show();
8 T0 n% M* `! V* k, F* j0 dconnect(gf,SIGNAL(OK_signal()),this,SLOT(showText()));//接收子窗口发送过来的信号
8 ?- t- \% r4 p( k1 X$ ]}
: M, W7 ]* P8 a) H# R- K完成后如图 94.2:
9 {6 }9 i- T6 L" E! N $ r2 l+ O( e v
主窗口效果如图 94.3:
4 w5 J/ _6 j- ^. ]5 m U![]()
0 I; k1 A. `: C) Z# p% D; M点击工具栏的打开文件,弹出子窗口,在子窗口中选择文件名,; |7 H! V+ l. Q2 k* [+ u$ E
![]()
- T: r) o" R$ m9 C6 b显示出文件内容:, {* C6 c% M( j# p5 C
![]()
O! A! U9 G1 x9 Z( `# L在开发板上运行时要根据屏幕大小来调整窗口尺寸。使用此方法一定要把工程中所有的窗口都放到- D: w0 W3 M7 u( Z- \+ m
Scene 中,才能达到旋转的效果。
/ q; T0 ~ C9 u) ^! W![]()
8 d/ h0 [3 e9 Z$ j6 _ |
|