如何根据上下文替换Qt应用程序运行时中的UI标签/工具提示?
我们正在开发一个Qt桌面应用程序。应用程序可以在每个选项卡中打开多个文件,每个选项卡(文件)都有自己的上下文。用户可以打开多个文件并在这些选项卡之间切换 e、 g:就像一个选项卡是卡车管理,工具栏中的操作(添加车辆)应显示工具提示“添加卡车”,如果另一个选项卡是车辆管理,则相同的操作应显示工具提示“添加车辆” 有很多事情是这样的:如何根据上下文替换Qt应用程序运行时中的UI标签/工具提示?,qt,macros,qtgui,qtranslate,string-externalization,Qt,Macros,Qtgui,Qtranslate,String Externalization,我们正在开发一个Qt桌面应用程序。应用程序可以在每个选项卡中打开多个文件,每个选项卡(文件)都有自己的上下文。用户可以打开多个文件并在这些选项卡之间切换 e、 g:就像一个选项卡是卡车管理,工具栏中的操作(添加车辆)应显示工具提示“添加卡车”,如果另一个选项卡是车辆管理,则相同的操作应显示工具提示“添加车辆” 有很多事情是这样的: 如果我删除卡车(即从卡车管理选项卡中删除车辆),则应显示消息框“卡车已成功删除”。如果删除车辆(即从车辆管理选项卡中删除车辆),则应显示“车辆已成功删除”消息 有些对
还有别的办法吗?或者任何指针/提示都会非常有用。我认为没有问题,因为标签/工具提示等中的文本在Qt中很容易更改。只需使用类方法中的适当文本调用QLabel::setText和QToolTip::showText方法,即:
myTruck::myTruck(QWidget *parent) :
QObject(parent)
{
/* do whatever you do in your class constructor */
<...>
myLabel->setText("Truck");
<...>
}
myTruck::~myTruck() :
QObject(parent)
{
/* do whatever you do in your class destructor */
<...>
myTooltip->showText("Truck deleted successfully");
<...>
}
myTruck::myTruck(QWidget*parent):
QObject(父对象)
{
/*在类构造函数中执行任何操作*/
myLabel->setText(“卡车”);
}
myTruck::~myTruck():
QObject(父对象)
{
/*在类析构函数中执行任何操作*/
myTooltip->showText(“卡车已成功删除”);
}
myLabel和myTooltip可能是MainWindow的成员,如果您无法直接访问它们(私人成员),则可能需要信号和插槽机制来更改它们。文件/选项卡可能知道它管理的内容(“卡车”、“汽车”、“飞机”),因此需要id来进行此区分 对于工具提示:订阅“当前”文件/选项卡的更改。
QTabWidget
有一个信号void currentChanged(int index)
,您可以订阅该信号。当当前文件/选项卡更改时(因为新文件已打开并获得焦点,或者因为用户已切换到另一个文件/选项卡),请从新的当前文件/选项卡检索id,并适当设置工具提示的文本
对于messagebox:当您要显示“…已成功删除”的messagebox时,请检索当前文件/选项卡的id,并使用此id构造需要显示的消息。有许多操作/对话框。通过这种方式,所有这些文本都需要订阅tabindexchange,最重要的是,不仅需要将一个文本卡车更改为汽车,还需要根据上下文更改更多的文本。这样做太过分了。只有父窗口小部件订阅这些更改并设置所有需要的子窗口小部件的文本就足够了。除非这仍然是过分的?