【Qt问题解答】通过QTreeWidget切换StackedWidget的页面

【Qt问题解答】【Qt问题解答】通过QTreeWidget切换StackedWidget的页面

参考资料

问题描述

希望实现点击QTreeWidget中的某个item,来切换到对应的stackedWidget中的Page。
实现过程中,碰到的问题有。当点击item(几何创建)后获取item的字符串,然后和“几何创建”比较看是否相同,来执行对应操作。但是通过item获取的字符串“几何创建”,和通过QString赋值的“几何创建”不相同,导致无法实现功能。

在这里插入图片描述
注:这里on_treeWidget_itemClicked()是自带的槽函数,可以直接使用,不用写信号和连接。

问题原因

QT中还有2个概念非常重要:

源码字符集(the source character set)源码文件是使用何种编码保存的
执行字符集(the execution character set)可执行程序内保存的是何种编码(程序执行时内存中字符串编码)

总体来说,解决方法就一个:你必须知道源码的编码和执行的编码。

QT的QString默认情况下只能正确显示UTF-8编码的字符串,因此,我们必须保证,要显示的字符串首先要转换为UTF-8,再进行显示。当然,我们也可以用代码人为的设定QString的编码。

然而,默认情况下,QT的编辑器是GB2312编码,QString是UTF-8编码,这时就会乱码,可以使用下文的方法一,把编码转为QString支持的编码

最简洁的方法就是:把源码改为UTF-8编码,这样不用做任何转换,直接就能正确显示,例如:

QString str="这是汉字";
ui->textEdit->append(str);

如果源码为GB2312,QString默认为为UTF-8,这时,要这样写才不会乱码:

QString str= QString::fromLocal8Bit("这是汉字");
ui->textEdit->append(str);

这个例子是把本地编码(我们的操作系统得编码大多为GB2312),转换为QString支持的编码。
PS:QString支持的编码是可以设置的,但是,任何时刻,都只能有一种编码生效。

解决方法

QString::fromUtf8("这是汉字");//在源代码为UTF8时使用
QString::fromLocal8Bit("这是汉字")//在本地编码转为UTF8时使用
QStringLiteral("这是汉字");

在这里插入图片描述

转换之后即可实现功能。

Qt Designer是一款强大的设计工具,用于创建并轻松管理图形用户界面(GUI)。Qt Stacked WidgetQt widget库中的一个窗口控件,用于在同一位置显示一组窗口小部件,每次只能显示一个小部件。使用Qt Designer设计Stacked Widget页面切换可以让用户轻松切换页面,使应用程序更加易于使用和导航。 要实现页面切换,首先需要在Qt Designer中创建一个Stacked Widget。使用Qt Designer的插件窗口,您可以从可用控件列表中选择Stacked Widget并将其拖放到主窗口中。然后,您可以在Stacked Widget中添加多个页面。每个页面都是一个小部件。或者,您可以使用预定义的页面模板。 在每个页面的设计模式下,您可以添加其他控件,例如文本框,标签,按钮等。您可以调整每个小部件的大小和布局,以使其在Stacked Widget中的显示效果最佳。然后,您需要将每个小部件与Stacked Widget关联,以便在应用程序中切换页面。 为此,请在Qt Designer的属性编辑器中选择Stacked Widget。然后,单击右上角的“添加页”按钮,添加与每个小部件对应的新页。可以通过单击Stacked Widget的页标题来更改每个页的名称。 开始进行页面切换。最常使用的方法之一是在菜单栏或其他控件上添加按钮,以在单击时触发页面切换。为此,请在Qt Designer中添加按钮,然后确保选中每个按钮并按Ctrl + D创建它们的副本。更改每个按钮的标签以显示对应页面的名称。然后,选择每个按钮,并单击Qt Designer中的“与可见页面”按钮,以在每个按钮和页面之间设置映射关系。 在代码中,您需要使用QStackedWidget类的setCurrentIndex函数来切换页面。可以通过使用编号或与每个按钮关联的索引来指定要显示的页面。 总之,使用Qt Designer设计Stacked Widget页面切换可以使用户更轻松地浏览和导航应用程序中的页面。在Qt Designer的视觉编辑器和属性编辑器中轻松添加多个页面,并为每个页面添加设计元素,以便用户可以看到和使用应用程序的主要功能。然后,通过为每个按钮设置映射关系,让用户单击按钮来切换页面。在代码中,使用setCurrentIndex函数指定要显示的页面
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值