Qt 如何避免 ui.retranslateui 重置combobox的data值

时间: 2024-01-21 10:17:22 浏览: 24
在 Qt 中,`ui.retranslateUi()` 会重置所有界面组件的文本值,包括 `QComboBox` 中的选项文本。如果你想要避免 `ui.retranslateUi()` 重置 `QComboBox` 的数据(例如选项列表),可以使用以下方法: 1. 在 `retranslateUi()` 函数中手动更新 `QComboBox` 的选项文本,而不是调用 `ui.comboBox->addItem()` 等函数。例如: ```cpp void MainWindow::retranslateUi() { // 先保存当前选项的值 QString currentText = ui.comboBox->currentText(); // 清空选项列表 ui.comboBox->clear(); // 添加新的选项文本 ui.comboBox->addItem(tr("Option 1")); ui.comboBox->addItem(tr("Option 2")); // 恢复之前的选项值 ui.comboBox->setCurrentText(currentText); } ``` 2. 将 `QComboBox` 的数据存储在类成员变量中,然后在 `retranslateUi()` 函数中重新设置选项列表。例如: ```cpp class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); private: Ui::MainWindow ui; QStringList m_comboItems; // 存储选项列表 private slots: void onComboBoxCurrentIndexChanged(int index); void onButtonClicked(); }; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); // 初始化选项列表 m_comboItems << tr("Option 1") << tr("Option 2"); ui.comboBox->addItems(m_comboItems); // 连接信号槽 connect(ui.comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onComboBoxCurrentIndexChanged(int))); connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(onButtonClicked())); } void MainWindow::retranslateUi() { // 更新选项列表 m_comboItems.clear(); m_comboItems << tr("Option 1") << tr("Option 2"); ui.comboBox->clear(); ui.comboBox->addItems(m_comboItems); } void MainWindow::onComboBoxCurrentIndexChanged(int index) { qDebug() << "Current index:" << index << "Current text:" << ui.comboBox->currentText(); } void MainWindow::onButtonClicked() { // 输出当前选项的值 qDebug() << "Current text:" << ui.comboBox->currentText(); } ``` 以上两种方法都可以避免 `ui.retranslateUi()` 重置 `QComboBox` 的数据。具体选择哪一种方法取决于你的需求。

相关推荐

from PyQt5 import QtCore, QtGui, QtWidgets from show1 import Ui_Form1 from show2 import Ui_Form2 from show3 import Ui_Form3 class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(90, 60, 191, 51)) font = QtGui.QFont() font.setPointSize(9) self.pushButton.setFont(font) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(Form) self.pushButton_2.setGeometry(QtCore.QRect(90, 110, 191, 51)) self.pushButton_2.setObjectName("pushButton_2") self.pushButton_3 = QtWidgets.QPushButton(Form) self.pushButton_3.setGeometry(QtCore.QRect(90, 160, 191, 51)) self.pushButton_3.setObjectName("pushButton_3") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.pushButton.setText(_translate("Form", "无人机群显示")) self.pushButton_2.setText(_translate("Form", "无人机群数据分析展示")) self.pushButton_3.setText(_translate("Form", "无人机群飞行轨迹展示")) class MainWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() self.ui = Ui_Form() self.ui.setupUi(self) self.ui.pushButton.clicked.connect(self.showForm1) self.ui.pushButton_2.clicked.connect(self.showForm2) self.ui.pushButton_3.clicked.connect(self.showForm3) def showForm1(self): self.form1 = QtWidgets.QWidget() self.ui1 = Ui_Form1() self.ui1.setupUi(self.form1) self.form1.show() def showForm2(self): self.form2 = QtWidgets.QWidget() self.ui2 = Ui_Form2() self.ui2.setupUi(self.form2) self.form2.show() def showForm3(self): self.form3 = QtWidgets.QWidget() self.ui3 = Ui

import sys from PyQt5 import QtCore, QtGui, QtWidgets class Ui_clientui(object): def setupui(self, clientui): clientui.setobjectName("clientui") clientui.resize(500,400) self.textEdit = QtWidgets.QTextEdit(clientui) self.textEdit.setGeometry(QtCore.QRect(120,100,320,100)) self.textEdit.setObjectName("textEdit") self.textEdit_2 = QtWidgets.QTextEdit(clientui) self.textEdit_2.setGeometry(QtCore.QRect(120,220,320,100)) self.textEdit_2.setobjectName("textEdit_2") self.lineEdit = QtWidgets.QLineEdit(clientui) self.lineEdit.setGeometry(QtCore.QRect(120,30,250,100)) self.lineEdit.setobjectName("lineEdit") self.label = QtWidgets.QLabel(clientui) self.label.setGeometry(QtCore.QRect(10,40,100,15)) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(clientui) self.label_2.setGeometry(QtCore.QRect(10,120,110,100)) self.label_2.setObjectName("label_2") def retranslateUi(self, clientui): translate = QtCore.CoreApplication.translate clientui.setWindowTitle(translate("clientui","2021218002")) self.label_setText(translate("clientui","服务器IP:")) self.label_2.setText(translate("clientui","要加密的明文")) self.label_3.setText(translate("clientui","加密的密文")) self.pushButton.setText(translate("clientui","发送信息")) self.pushButton_2.setText(translate("clientui","退出")) self.pushButton_3.setText(translate("clientui","连接")) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) MainWindow =QtWidgets.QMainWindow() ui = Ui_clientui() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())

这是一段python代码,请根据这段代码基于python_opencv实现点击self.pushButton时打开已搜到的相机列表并实现鼠标点击选择打开相应相机并显示在self.label,当点击self.pushButton_2时抓取当时帧显示在self.label_2 from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(1044, 729) self.gridLayoutWidget = QtWidgets.QWidget(Form) self.gridLayoutWidget.setGeometry(QtCore.QRect(19, 9, 991, 551)) self.gridLayoutWidget.setObjectName("gridLayoutWidget") self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setObjectName("gridLayout") self.label = QtWidgets.QLabel(self.gridLayoutWidget) font = QtGui.QFont() font.setFamily("Adobe Arabic") font.setPointSize(26) self.label.setFont(font) self.label.setStyleSheet("background-color: rgb(255, 255, 127);") self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.label_2 = QtWidgets.QLabel(self.gridLayoutWidget) font = QtGui.QFont() font.setFamily("Adobe Arabic") font.setPointSize(26) self.label_2.setFont(font) self.label_2.setStyleSheet("background-color: rgb(170, 255, 255);") self.label_2.setAlignment(QtCore.Qt.AlignCenter) self.label_2.setObjectName("label_2") self.gridLayout.addWidget(self.label_2, 0, 1, 1, 1) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(130, 640, 161, 51)) font = QtGui.QFont() font.setFamily("Adobe Arabic") font.setPointSize(18) self.pushButton.setFont(font) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(Form) self.pushButton_2.setGeometry(QtCore.QRect(660, 640, 161, 51)) font = QtGui.QFont() font.setFamily("Adobe Arabic") font.setPointSize(18) self.pushButton_2.setFont(font) self.pushButton_2.setObjectName("pushButton_2") self.retranslateUi(Form) self.pushButton.clicked.connect(Form.Action) # type: ignore self.pushButton_2.clicked.connect(Form.UserNow) # type: ignore QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.label.setText(_translate("Form", "实时图像")) self.label_2.setText(_translate("Form", "抓取图像")) self.pushButton.setText(_translate("Form", "打开相机")) self.pushButton_2.setText(_translate("Form", "抓取图像"))

最新推荐

recommend-type

基于springboot开发的前后端分离的简易进销存后台管理系统.zip

基于springboot的java毕业&课程设计
recommend-type

基于springboot-mqtt的温度、湿度、六氟化硫浓度实时监控系统.zip

基于springboot的java毕业&课程设计
recommend-type

会计信息化对华强公司内部审计的影响研究.docx

会计信息化对华强公司内部审计的影响研究.docx
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SQL怎么实现 数据透视表

SQL可以通过使用聚合函数和GROUP BY子句来实现数据透视表。 例如,假设有一个销售记录表,其中包含产品名称、销售日期、销售数量和销售额等信息。要创建一个按照产品名称、销售日期和销售额进行汇总的数据透视表,可以使用以下SQL语句: ``` SELECT ProductName, SaleDate, SUM(SaleQuantity) AS TotalQuantity, SUM(SaleAmount) AS TotalAmount FROM Sales GROUP BY ProductName, SaleDate; ``` 该语句将Sales表按照ProductName和SaleDat
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这