EDA365电子论坛网
标题:
迅为iTOP-iMX6ULL开发板-Qt窗口旋转
[打印本页]
作者:
孤久厌闹
时间:
2020-10-19 10:13
标题:
迅为iTOP-iMX6ULL开发板-Qt窗口旋转
本章节使用的资料已经放到了开发板网盘资料中,路径为:11_
Linux
系统开发进阶\94_章节使用资料。
& {, ?1 S$ \' e; P M
本章节介绍在 yocto Qt5 文件系统中使用程序旋转 Qt 窗口。在
嵌入式
中有时候需要竖屏显示,有时候不能修改 Qt 源码,那么可以在 Qt 应用程序中将窗口旋转 90 度。方法是将主窗口放入到 QGraphicsScene 中,然后旋转 90 度,通过 QGraphicsView 显示。子窗口通过指针来访问父窗口达到旋转的效果。
0 X, b" x( q, [ C# u
例程在文档同一目录下,实现的功能是点击主窗口工具栏的打开文件,然后弹出子窗口选择文件(选择普通文件),选择完点击确认,子窗口关闭,主窗口的 textEdit 组件会显示文件内容。
( [3 b6 c; P+ g- k7 r
在 main.cpp 中修改主窗口的显示过程,Rotate 为主窗口类:
6 O. z: T8 ~( J% L1 U' h; M' w; ]- b
int main(int argc, char *argv[])
" i1 j( `/ ]! H8 u3 c6 c
{
2 |3 e# A* {; y; n, `# y
QApplication a(argc, argv);
( o8 S$ P! i+ f! X1 ~1 u
Rotate w;//主窗口
2 p `, D0 ^* w. ~
/*
4 c) D0 U7 ]7 p: G
* 旋转主窗口
. N0 g8 }. ~" {$ K, v7 y
*/
' O1 @$ {' s6 o
QGraphicsScene *scene = new QGraphicsScene;
3 h8 }* d- R6 n# I. X* a6 p
QGraphicsProxyWidget *gpw = scene->addWidget(&w);
$ Z( R/ y2 v+ Z1 `
gpw->setRotation(90);//旋转 90 度
5 D \, X, K# v3 \0 W% V/ q2 @" q
QGraphicsView *view = new QGraphicsView(scene);
1 f3 U5 [4 ?: ?" Y: }. u2 m
view->showFullScreen();//全屏显示
E/ n# ]% c( `
return a.exec();
* P2 }0 q+ P. t+ K
}
2 G1 z9 t0 q; ~/ O
添加完后如图 94.1:
8 o* d& K7 p' B2 N4 U+ D5 c
# } {4 b Z' p0 ~( Z
子窗口通过“this”指针指定父窗口将所有项目界面加载到 QGraphicsScene,创建子窗口对象时代码如下:
$ Q& @3 Y( ], h
void Rotate::showOpenFile()
5 f v; {. k& O: g+ U9 S# m3 _
{
5 e) z" ^) T0 h8 N5 k8 g
gf = new getfile(this);//子窗口调用 scene
9 \) M: W& s; Y/ a" f
gf->show();
1 v5 X& C4 |5 N" W! K: G9 K4 X7 Q- p
connect(gf,SIGNAL(OK_signal()),this,SLOT(showText()));//接收子窗口发送过来的信号
" m( M' Y# f* C/ i- t
}
- L+ G( d; L, _/ I! L1 V i: \
完成后如图 94.2:
8 G7 n: F4 P+ e0 T6 H
# ]$ G6 c0 ?& Q2 }* ]
主窗口效果如图 94.3:
- A! h H4 l# F( e% u- _, w+ V4 @
" n6 p+ o3 H: ?
点击工具栏的打开文件,弹出子窗口,在子窗口中选择文件名,
; f! M0 @% M4 H$ T" y0 \6 r1 {* Q
- Y7 T# ]; ?2 G0 [3 p- m
显示出文件内容:
( V# m4 s7 q2 f, y8 Y+ w
" x3 O+ D" m+ _# |) T- l) m) h
在开发板上运行时要根据屏幕大小来调整窗口尺寸。使用此方法一定要把工程中所有的窗口都放到Scene 中,才能达到旋转的效果。
6 w: |' L+ H _0 N! V
6 |5 V/ d8 x" a! b. D8 ~7 z7 h
" v% y+ D9 W8 u+ N9 B
$ ]* s6 S7 B: N2 ?; U
# b8 B; p1 Q b. J+ \& a$ t' H
作者:
shapeofyou888
时间:
2020-10-19 15:22
太详细了
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2