|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本章节使用的资料已经放到了开发板网盘资料中,路径为:11_Linux 系统开发进阶\94_章节使用资料。1 j, u' a6 }6 p# I4 @5 `2 P
本章节介绍在 yocto Qt5 文件系统中使用程序旋转 Qt 窗口。在嵌入式中有时候需要竖屏显示,有时候$ f4 W* \0 c' U- |" C, s; K
不能修改 Qt 源码,那么可以在 Qt 应用程序中将窗口旋转 90 度。方法是将主窗口放入到 QGraphicsScene 中,: `; F8 M: K# Z" ^
然后旋转 90 度,通过 QGraphicsView 显示。子窗口通过指针来访问父窗口达到旋转的效果。% Y) y) m+ V7 _$ Q4 I1 i
例程在文档同一目录下,实现的功能是点击主窗口工具栏的打开文件,然后弹出子窗口选择文件(选
# w* |) w$ w; D6 e4 q择普通文件),选择完点击确认,子窗口关闭,主窗口的 textEdit 组件会显示文件内容。7 B% E9 W0 C$ o/ x# ^; |
在 main.cpp 中修改主窗口的显示过程,Rotate 为主窗口类:
5 _ O7 }: Y) t1 B& w" eint main(int argc, char *argv[])- g! Z: E$ S0 a# w* I7 t: m
{
/ w; u7 k7 R" D% e7 ?$ dQApplication a(argc, argv);) S! D* J, s% ]; z; C
Rotate w;//主窗口
* h4 a$ s @0 E; L0 ^0 C4 k9 ~/*, @7 \& @. d8 I9 n
* 旋转主窗口
* A8 Z: g, R1 b*/; Y/ U+ P( Z/ K; ?, a/ T# q
QGraphicsScene *scene = new QGraphicsScene;
9 \/ x' _6 B5 b# {0 RQGraphicsProxyWidget *gpw = scene->addWidget(&w);
$ A) @' K. A. F# N9 Jgpw->setRotation(90);//旋转 90 度+ A; b' i' a; S' o7 o$ ^) ?( c
QGraphicsView *view = new QGraphicsView(scene);
2 K4 E, f2 I/ M3 f" `& G& vview->showFullScreen();//全屏显示. K' c; b* ]$ K( C$ p% O
return a.exec();8 S+ h4 h; S# k; b) c" O
}- a* k& b0 A. T9 A! w% O
添加完后如图 94.1:
) S( `* }, h* k/ R![]()
) {" G# {7 S0 m- h, ]1 }7 t0 x子窗口通过“this”指针指定父窗口将所有项目界面加载到 QGraphicsScene,创建子窗口对象时代码如
, p6 l" }3 k: ^6 [! b下:* x: D+ T+ q, F7 J. u; _! L7 [
void Rotate::showOpenFile()' x) `6 p% _1 {) D5 \
{8 `" E% s& A M5 K Q1 O4 Z2 l$ r
gf = new getfile(this);//子窗口调用 scene
( |! f) }& ~$ p9 @9 rgf->show();' V! \, h5 Q6 v G( m$ F
connect(gf,SIGNAL(OK_signal()),this,SLOT(showText()));//接收子窗口发送过来的信号; ]- D0 t5 {2 @1 V) ?
}0 [. t6 J# _8 T- B! S
完成后如图 94.2:2 O! w7 B2 C& \6 c
![]()
. O# j K, y3 F" W主窗口效果如图 94.3:
7 Y o) H9 m" ~* m4 g' Q) c7 z# z) Q: J0 u![]()
$ Y2 M4 b$ n. q m4 [+ w" k5 n3 u点击工具栏的打开文件,弹出子窗口,在子窗口中选择文件名,* [! X1 l% O1 b5 B; |/ [1 r- W
![]()
+ R+ S6 p6 `/ v. j4 a' ]显示出文件内容:& G7 ~6 j7 E; o+ u! g* Z- `
![]()
- ?# z4 a d! l( r. [在开发板上运行时要根据屏幕大小来调整窗口尺寸。使用此方法一定要把工程中所有的窗口都放到" `0 r8 q7 S- x( V1 w
Scene 中,才能达到旋转的效果。
3 D+ S, Z$ b% G0 C & Y) y, D9 R' G" _
|
|