#QT深坑# QUndoStack撤销和返回制作多语言的一个坑!!

QT中有自带的redo/undo类了,大致代码都是这样的:


QUndoStack  *m_undoStack;

QAction *pUndo = m_undoStack->createUndoAction(this,"&撤销");

QAction *pRedo = m_undoStack->createRedoAction (this,"&返回");


这两个函数创建好ACTION之后,添加到工具栏或菜单栏......


此时,setText或默认第二个参数传递的标题文字,但是在多语言的QM加载后,仍保存软件启动时的文字!


意思就是得必须重启软件,你读取最后一次的QM配制后,才能正常显示!!!


拿QT安装目录的示例代码来测试,也是同样的问题!这是巨坑的问题!!!



解决办法:


1、后来想到了一个很搓的办法,每一次push都会调用resetUndoText来重新刷新文字!


在每一个m_undoStack->push(command)之后添加一个resetUndoText()函数来手动修改


这样的话能保证你的每次push之后,不会自动刷新成第一次启动的


void MainWindow::resetUndoText()

{

     pUndo ->setText(tr("撤销"));

     pRedo->setText(tr("返回"));

}


2、最后,还要在m_undoStack->create之后的手动关联槽


connect(pUndo, SIGNAL(triggered()), this, SLOT(resetUndoText()));
connect(pRedo, SIGNAL(triggered()), this, SLOT(resetUndoText()));

这样,当点击两个按钮的时候,再刷新一次文字,这样就保证多语言的QUndoStack QAction就没有任何障碍了!



制作一个课设(课程设计)项目,可以使用Qt和C++语言来开发一个具有图形用户界面(GUI)的应用程序。下面是一个简单的示例,说明如何创建一个简单的Qt项目,并使用C++进行编程,以展示一个简单的窗口,并在其中放置一个按钮和一个文本标签。 首先,你需要安装Qt开发环境和相应的C++编译器。安装完成后,你可以使用Qt Creator创建一个新项目。 1. 打开Qt Creator,选择“新建项目”。 2. 在“创建项目”的窗口中,选择“应用程序”下的“Qt Widgets 应用程序”。 3. 填写项目名称,选择存储位置,以及配置项目的一些基本信息。 4. 创建项目后,Qt Creator会自动生成一些代码和资源文件。现在我们来添加一些代码来创建一个简单的窗口。 以下是一个简单的示例代码,展示了如何在Qt中使用C++创建一个窗口、一个按钮和一个文本标签: ```cpp #include <QApplication> #include <QWidget> #include <QPushButton> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建应用程序实例 QWidget window; // 创建一个QWidget对象,它是所有UI对象的基类 window.setFixedSize(200, 100); // 设置窗口大小 QLabel *label = new QLabel("Hello, World!", &window); // 创建一个标签并放在窗口上 label->setGeometry(50, 20, 100, 30); // 设置标签的位置和大小 QPushButton *button = new QPushButton("Click me!", &window); // 创建一个按钮 button->setGeometry(50, 60, 100, 30); // 设置按钮的位置和大小 window.show(); // 显示窗口 return app.exec(); // 进入事件循环 } ``` 在上面的代码中,首先包含了必要的Qt模块。然后在`main`函数中,创建了`QApplication`和`QWidget`对象,后者代表了应用程序中的窗口。通过创建`QLabel`和`QPushButton`对象并设置它们的几何位置和大小,我们在这个窗口中添加了一个标签和一个按钮。最后,调用`show()`方法显示窗口,并进入事件循环,这样应用程序才能响应用户操作。 这个项目是非常基础的,但是你可以在此基础上添加更多的功能,比如响应按钮点击事件、处理其他用户输入、数据存储等等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪宁宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值