linux嵌入式qt的屏幕旋转与字体大小问题
- 格式:docx
- 大小:14.05 KB
- 文档页数:1
树莓派(Linux系统)触摸屏翻转显⽰树莓派(Linux 系统)触摸屏翻转显⽰以及触摸翻转问题:未使⽤的Pi官⽅屏幕,所以使⽤HDMI屏幕显⽰的时候,显⽰旋转的同时,触摸没有旋转⽬的:旋转屏幕显⽰的同时,使得触摸也跟随旋转操作总流程:旋转90度操作翻转显⽰:1.sudo nano /boot/config.txt2.在⽂件末尾加⼊display_rotate=0display_rotate=1 //90°display_rotate=2 //180°display_rotate=3 //270°ctrl + o 保存⽂档重启即可。
注:以下操作皆为SSH操作,所以每条指令前都加了DISPLAY=:0,如果本机操作删掉即可。
1.安装xinputsudo apt-get install xinput2.列出所有输⼊设备信息远程操作时,使⽤xinput指令需要加⼊DISPLAY=:0DISPLAY=:0 xinput --list3.列出⽬标设备属性DISPLAY=:0 xinput --list-props 74.旋转触摸的坐标轴1)所以先交换x、y轴DISPLAY=:0 xinput --set-prop '7' 'Evdev Axes Swap' 12)然后反转y轴DISPLAY=:0 xinput --set-prop '7' 'Evdev Axis Inversion' 0 1显⽰旋转修改之后需要重启。
⽽触摸旋转不需要重启。
详细操作⽅法:1.安装xinputsudo apt-get install xinput描述:xinput - utility to configure and test X input devicesxinput-⽤于配置和测试X输⼊设备的实⽤程序xinput is a utility to list available input devices,xinput是⼀个实⽤程序,可以列出可⽤的输⼊设备、query information about a device and change input device settings.关于设备的查询信息和更改输⼊设备设置2.列出所有输⼊设备信息xinput --list如果远程操作记得在命令前加DISPLAY=:0得到以下信息:pi@NTGAGE:~ $ DISPLAY=:0 xinput --list⎡ Virtual core pointer id=2 [master pointer (3)]⎜↳ Virtual core XTEST pointer id=4 [slave pointer (2)]⎜↳ Logitech USB Optical Mouse id=6 [slave pointer (2)]⎜↳ WaveShare WaveShare Touchscreen id=7 [slave pointer (2)]⎣ Virtual core keyboard id=3 [master keyboard (2)]↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]↳ Logitech USB Keyboard id=8 [slave keyboard (3)]↳ Logitech USB Keyboard id=9 [slave keyboard (3)]3.列出⽬标设备属性由于所使⽤的触摸屏幕是微雪7⼨屏幕,由以上信息可以得到微雪的触摸屏对应的ID为7所以,接下来看这款输⼊设备的属性,pi@NTGAGE:~ $ DISPLAY=:0 xinput --list-props 7Device 'WaveShare WaveShare Touchscreen':Device Enabled (115): 1Coordinate Transformation Matrix (116): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 Device Accel Profile (240): 0Device Accel Constant Deceleration (241): 1.000000Device Accel Adaptive Deceleration (242): 1.000000Device Accel Velocity Scaling (243): 10.000000Device Product ID (244): 3823, 5Device Node (245): "/dev/input/event3"Evdev Axis Inversion (246): 0, 0Evdev Axis Calibration (247):Evdev Axes Swap (248): 0Axis Labels (249): "Abs MT Position X" (267), "Abs MT Position Y" (268), "Abs MT Pressure" (269), "None" (0), "None" (0), "None" (0) Button Labels (250): "Button Unknown" (233), "Button Unknown" (233), "Button Unknown" (233), "Button Wheel Up" (121), "Button Wheel Down" (122)Evdev Scrolling Distance (251): 0, 0, 0Evdev Middle Button Emulation (252): 0Evdev Middle Button Timeout (253): 50Evdev Third Button Emulation (254): 0Evdev Third Button Emulation Timeout (255): 1000Evdev Third Button Emulation Button (256): 3Evdev Third Button Emulation Threshold (257): 20Evdev Wheel Emulation (258): 0Evdev Wheel Emulation Axes (259): 0, 0, 4, 5Evdev Wheel Emulation Inertia (260): 10Evdev Wheel Emulation Timeout (261): 200Evdev Wheel Emulation Button (262): 4Evdev Drag Lock Buttons (263): 0这块屏幕正常显⽰和触摸的信息如上。
qt 文字超出控件应对方法When text exceeds the boundaries of a Qt widget, it can be a frustrating and challenging issue to resolve. One possible solution is to adjust the size of the widget dynamically based on the length of the text. This can be achieved by calculating the size of the text and setting the widget's size accordingly. However, this approach maynot work well in all cases, as it can lead to excessively large widgets that take up too much screen space. Additionally, it may not be the most visually appealing solution, as it can result in unevenly sized widgets that do not look cohesive.当文本超出Qt小部件的边界时,这可能是一个令人沮丧和具有挑战性的问题。
一种可能的解决方案是根据文本的长度动态调整小部件的大小。
这可以通过计算文本的大小并相应地设置小部件的大小来实现。
然而,在某些情况下,这种方法可能效果不佳,因为它会导致占用太多屏幕空间的过大小部件。
此外,它可能不是最具视觉吸引力的解决方案,因为它可能导致大小不一的小部件,看起来不协调。
Another approach to addressing text overflow in Qt widgets is to implement text wrapping. This involves automatically breaking upthe text into multiple lines when it exceeds the boundaries of the widget. Text wrapping can help ensure that all the text is visible within the widget, regardless of its length. However, text wrapping may not always be suitable for all types of text, as it can potentially affect the layout and readability of the content. Additionally, text wrapping may not be aesthetically pleasing in certain cases, as it can create uneven line breaks and disrupt the flow of the text.解决Qt小部件中的文本溢出问题的另一种方法是实现文本换行。
Qt 字体设置(QFont )详解简述QFont 字体设置⽆⾮就是设置下⾯⼀些参数:QFont 常⽤属性函数 描述setFamily设置字体setPixelSize设置字体像素⼤⼩setBold字体加粗setItalic斜体setPointSize设置字体⼤⼩setOverline上划线setUnderline下划线setStrikeOut 删除线设置字体⼤⼩和像素⼤⼩的区别setPixelSize()函数使⽤像素作为单位来设置字体⼤⼩setPointSize()函数规定了实际中我们⾁眼看到的字体的⼤⼩,与像素⽆关使⽤setPixelSize 函数设置⼤⼩,在像素⼤⼩不同的设备上显⽰的⼤⼩也不同使⽤setPointSize 函数设置⼤⼩,在不同设备上显⽰的⼤⼩是相同的QFont 衍⽣QFont 为绘画⽂本提供制定的字体QFontComboBox 提供了选择字体族的下拉列表框QFontDatabase 提供了可以在Window 操作系统下能够使⽤的字体QFontDialog ⽤来选择⼀个指定的字体QFontEngineInfo ⽤来描述⼀个指定的字体引擎插件QFontEnginePlugin 累提供了字体仓库插件的基础累, ⽤于嵌⼊式linuxQFontInfo 包含了⼀个字体的常规信息QFontDialog ⽤来弹出对话框来获得指定的字体常⽤的字体(不知道样式的可以在ui的字体设置⾥⾯查看对应字体的样式)宋体 SimSun⿊体 SimHei微软雅⿊ Microsoft YaHei微软正⿊体 Microsoft JhengHei新宋体 NSimSun新细明体 PMingLiU细明体 MingLiU标楷体 DFKai-SB仿宋 FangSong楷体 KaiTi仿宋_GB2312 FangSong_GB2312楷体_GB2312 KaiTi_GB2312宋体:SimSuncss中中⽂字体(font-family)的英⽂名称Mac OS的⼀些:华⽂细⿊:STHeiti Light [STXihei]华⽂⿊体:STHeiti华⽂楷体:STKaiti华⽂宋体:STSong华⽂仿宋:STFangsong儷⿊ Pro:LiHei Pro Medium儷宋 Pro:LiSong Pro Light標楷體:BiauKai蘋果儷中⿊:Apple LiGothic Medium蘋果儷細宋:Apple LiSung LightWindows的⼀些:新細明體:PMingLiU細明體:MingLiU標楷體:DFKai-SB⿊体:SimHei新宋体:NSimSun仿宋:FangSong楷体:KaiTi仿宋_GB2312:FangSong_GB2312楷体_GB2312:KaiTi_GB2312微軟正⿊體:Microsoft JhengHei微软雅⿊体:Microsoft YaHei装Office会⽣出来的⼀些:⾪书:LiSu幼圆:YouYuan华⽂细⿊:STXihei华⽂楷体:STKaiti华⽂宋体:STSong华⽂中宋:STZhongsong华⽂仿宋:STFangsong⽅正舒体:FZShuTi⽅正姚体:FZYaoti华⽂彩云:STCaiyun华⽂琥珀:STHupo华⽂⾪书:STLiti华⽂⾏楷:STXingkai华⽂新魏:STXinwei。
如何实现更改Linux终端字体的种类和⼤⼩本⽂译⾃:“How To Change Linux Console Font Type And Size”译者:开源视界校对:OpenView原⽂及本⽂遵循:CC BY-NC 4.0协议如果你拥有图形桌⾯环境,则很容易更改⽂本字体类型及其⼤⼩。
那么,你如何在没有图形环境的Ubuntu⽆头服务器(译注: 指没有显⽰器⿏标等周边设备的服务器)中做到这⼀点呢?别担⼼!本指南介绍了如何更改Linux控制台的字体和⼤⼩的⽅法。
这对于那些不喜欢默认字体类型和⼤⼩或者喜欢不同字体的⼈来说⾮常有⽤。
更改Linux控制台字体类型和⼤⼩如果您还不知道,这就是Ubuntu Linux⽆头服务器控制台的样⼦。
Ubuntu Linux控制台据我所知,我们可以在控制台上列出已安装的字体,但没有像GUI桌⾯中的终端模拟器那样⽤于更改Linux控制台中字体的类型和⼤⼩的选项。
但这并不意味着我们⽆法改变它。
我们仍然可以更改控制台字体。
如果你正在使⽤Debian,Ubuntu和其他基于DEB的系统,你可以使⽤“console-setup”配置⽂件来设置setupcon ,它⽤于配置控制台的字体和键盘布局。
控制台设置配置⽂件的标准位置是/etc/default/console-setup 。
现在,运⾏以下命令来设置Linux控制台的字体。
$ sudo dpkg-reconfigure console-setup选择要在Linux控制台上使⽤的编码。
只需保留默认值,选择“确定”并按Enter继续。
选择要在Ubuntu中的控制台上设置的编码接下来,从列表中选择控制台字体应⽀持的字符集。
默认情况下,它是我的系统中的最后⼀个选项,即Guess optimal character set。
只需将其保留为默认值,然后按ENTER键。
在Ubuntu中选择字符集接下来选择控制台的字体,然后按ENTER键。
在这⾥,我选择“TerminusBold”。
【如何在VMware下的Linux中调整屏幕大小】如何调整电
脑屏幕大小
如何在VMware下的Linux中调整屏幕大小
1、在VMWare菜单VM下,install VMWare Tools
系统自动加载VMWare Tools镜像,此时在ubuntu桌面能够看到,如下图所示。
双击打开光盘,里面有文件VMwareTools-8.8.2-590212.tar.gz,右键copy 到桌面。
如下图所示。
2、解压
输入命令
tar zxf /home/sunev/Desktop/VMwareTools-8.8.2-590212.tar.gz 此时,桌面将出现一个名为 vmware-tools-distrib的文件夹,进入到该目录
cd /home/sunev/Desktop/vmware-tools-distrib
3、安装
执行安装命令
sudo ./vmware-install.pl
按提示安装即可,VMWare Tools安装完毕,在VMWare菜单View下Autosize 选择Autofit Guest,重启一下ubuntu,这时,ubuntu的桌面占据了VMWare下的整个窗口。
看了如何在VMware下的Linux中调整屏幕大小还想看:
1.虚拟机里面Linux无法全屏怎么办
2.Linux命令行(console)屏幕分辨率调整
3.Linux系统中如何安装VMware tools
4.VMware虚拟机里Linux系统怎么上网。
嵌入式Linux系统下的汉字处理和显示第一篇:嵌入式Linux系统下的汉字处理和显示嵌入式Linux系统下的汉字处理和显示本文阐述在嵌入式Linux环境下通过汉字编码的转换,汉字字体的提取,实现对汉字的处理和显示。
所提出的解决方案,在嵌入式Linux环境下,可以不依赖于MicroWindows、MiniGUI等嵌入式图形界面接口软件实现汉字的处理与显示。
1 汉字编码的处理由于传统的计算机字符内码ASCII码最多只能包含256个字符,只能包含英文字符和其他常用字符,而不能包含其它语言的字符,尤其是汉字。
因此不同的组织机构又制定了包含汉字的字符编码标准。
GB编码是由我国政府颁布的国家标准,经过不断扩充,形成了GB2312、GB13000(GBK)、GB18030标准;BIG-5码是主要由使用繁体字的地区采用的标准;Unicode编码是由Unicode协会为包含汉字在内的各种语种字符制定的统一字符集标准,同时兼容于国际标准ISO 10646,但是不兼容GB编码。
Unicode编码又有UTF8等实现形式,一般Unicode指UCS-2规范。
在嵌入式Linux系统下使用的汉字,其来源大致可以分为: 1.程序字符串常量中的汉字;2.文本文件或其它资源文件。
因为各种源文件编辑器、文本文件编辑器或资源文件来源的不同、网络环境的不同。
因此嵌入式Linux系统下使用的汉字也体现为各种不同的编码格式,需要进行编码格式的转换,才能够对汉字进行正确的处理。
嵌入式Linux系统应用开发所使用的程序源文件和文本文件,一般是来自于Windows操作系统下的编辑工具,或Linux桌面操作系统下的编辑工具。
Windows操作系统下的常用文本编辑器,如Notepad、UltraEdit等,缺省的文件编码保存格式是ASCII码,其中的汉字以GB编码保存。
Linux XWindow下的图形界面文件编辑器gEdit,也以ASCII码作为缺省的文本保存编码,其中的汉字以UTF-8编码保存。
主页 · 所有的命名空间 · 所有的类 · 主要的类 · 分组的类 ·模Qt 的显示管理,Qt 嵌入式客户端默认的行为是将其器件写入内存,而服务器负责把内存的内容存储到屏幕上。
服务器使用屏幕驱动器将内存的内容复制到屏幕显示。
内容:∙∙ ∙可用的驱动screens, VNC servers 和 multi screens. 运行configure 脚本可以列出可用的驱动:./configure -help在Qt 的默认配置文件中,只有一个未加速的Linux framebuffer driver (/dev/fb0) 是可用的.通过使用configure 脚本可以让各种驱动可用或禁用. 例如:./configure -qt-gfx-transformed通常的屏幕驱动能通过QScreen 的子类和创建的屏幕驱动插件(从QScreenDriverPlugin 类继承)被执行. QScreenDriverFactory 类默认执行将自动检测插件,在运行期加载驱动到服务端应用程序.指定一个驱动bash,ksh,zsh或者sh):export QWS_DISPLAY="<driver>[:<driver specific options>]...[:<display num>]"<driver>的有效参数是LinuxFb, QVFb, VNC, Transformed, Multi和keys identifying custom drivers, <display num>的参数通常是用来区分是否是相同的显示屏和是否支持多看下面表格.驱动详细选项可用的描述tty=<device> LinuxFb 程序运行时传送至控制台的设备文件.nographicsmodeswitch LinuxFb 确定应用程序没有在图形模式下.littleendian LinuxFb 在大端系统下告诉驱动必须处理小端的frame buffer. mmWidth=<value> LinuxFb, QVFb 屏幕的物理宽度 (通常是按分辨率计算).mmHeight=<value> LinuxFb, QVFb 屏幕的物理宽度 (通常是按分辨率计算).<device> LinuxFb指定一个子驱动.<subdriver> VNC, Transformed,Multi<RotX> Transformed 指定屏幕的旋转. x的有效值为90, 180和270.offset=<x,y> Multi 指定子窗口左上角的坐标系(默认0,0).myApplication -display "<driver>[:<driver specific options>]...[:<display num>]"子驱动和多驱动VNC, Transformed和Multi screen drivers都依赖子驱动. 指定一个驱动的一般方法如下:: export QWS_DISPLAY="<driver>[:<subdriver>][:<subdriver options>]...[ :<display num>]"就子驱动而言, 在每个子驱动和显示的数目去区分多个驱动和显示器是很重要的. 多屏幕驱动可以有多个子驱动,例如:export QWS_DISPLAY="Multi: QVFb:0 QVFb:offset=640,0:1 :2"如果子驱动没有被指定,VNC screen驱动被默认为一个虚拟屏驱动.在这种情况下VNC驱动允许指定一些额外的参数(可选的),默认虚拟屏的尺寸和深度:∙size=<width x height>∙depth=<value>∙mmHeight=<physical height in millimeters>∙mmWidth=<physical width in millimeters>运行一个尺寸为720x480像素32位的VNC虚拟屏的例子如下:export QWS_DISPLAY="VNC:size=720x480:depth=32"在Linux framebuffer上运行VNC屏驱动的例子:export QWS_DISPLAY="VNC:LinuxFb"在这最后一个例子, Qt同时使用两个显示驱动, 设备屏幕和通过网络的VNC客户端的显示的显示输出.。
解密Android测试中的屏幕旋转和布局适配问题在Android开发中,屏幕旋转和布局适配是一个常见而又众多开发者头疼的问题。
当用户旋转设备时,应用程序的布局和界面需要适应新的屏幕尺寸和方向。
这就需要开发者在测试中解密并解决屏幕旋转和布局适配问题。
本文将详细介绍如何处理这些问题,以确保应用程序在不同屏幕旋转和尺寸下的正常运行。
一、了解屏幕旋转和布局适配的概念在开始解决问题之前,让我们先了解一下屏幕旋转和布局适配的概念。
1. 屏幕旋转:屏幕旋转指的是用户将设备从竖屏模式切换到横屏模式或反之。
在旋转过程中,应用程序需要根据新的屏幕尺寸和方向重新布局和适配。
2. 布局适配:布局适配是指根据屏幕的尺寸和方向来调整应用程序的布局,以保证应用程序在不同设备上正常显示,并提供良好的用户体验。
二、解密屏幕旋转问题屏幕旋转时,会触发Android系统重新创建Activity的生命周期。
这就需要开发者进行一些额外的处理,以确保数据的持久性和用户体验的连续性。
1. 保存和恢复数据:在Activity或Fragment中,可以重写onSaveInstanceState方法来保存相关数据。
然后,在onCreate或onRestoreInstanceState方法中恢复这些数据。
这样,即使屏幕旋转,用户也能够看到之前输入的数据。
2. 使用特定布局:为了适应不同的屏幕尺寸和方向,可以为不同的布局创建不同的资源文件。
例如,可以创建一个layout-land文件夹,用于存放横屏模式下的布局文件。
系统会根据设备的方向自动加载相应的布局文件。
三、解密布局适配问题布局适配问题主要包括适配不同屏幕尺寸和适配不同屏幕密度两个方面。
1. 适配不同屏幕尺寸:Android提供了多种方法来适配不同屏幕尺寸,其中一种常见的方法是使用权重(weight)属性来定义布局中各个控件的比例关系。
另外,还可以使用相对布局(RelativeLayout),通过设置各个控件之间的相对位置来适应不同的屏幕尺寸。