当前位置: 首页 > wzjs >正文

公司建站模版做外贸网站怎么设计

公司建站模版,做外贸网站怎么设计,青岛地产网站建设,长沙网站搜索排名目的 UI设计器生成界面的国际化,比较容易实现些,因为有现成的函数可以调用,基本过程如下: void MainWindow::on_actLang_CN_triggered() {//中文界面qApp->removeTranslator(trans);delete trans;transnew QTranslator;trans…

目的

UI设计器生成界面的国际化,比较容易实现些,因为有现成的函数可以调用,基本过程如下:

void MainWindow::on_actLang_CN_triggered()
{//中文界面qApp->removeTranslator(trans);delete trans;trans=new QTranslator;trans->load("samp16_1_cn.qm");qApp->installTranslator(trans);ui->retranslateUi(this);QSettings   settings("WWB-Qt","samp16_1"); //注册表键组settings.setValue("Language","CN"); //界面语言,汉语
}
void MainWindow::on_actLang_EN_triggered()
{//英文界面qApp->removeTranslator(trans);delete trans;trans=new QTranslator;trans->load("samp16_1_en.qm");qApp->installTranslator(trans);ui->retranslateUi(this);QSettings   settings("WWB-Qt","samp16_1"); //注册表键组settings.setValue("Language","EN"); //界面语言,英语
}

直接调用相应的函数就可以了。
但手动编写代码的界面如何实现这些呢?
比如这个界面:

Widget::Widget(QWidget *parent): QWidget(parent),trans(nullptr)
{QLabel* label = new QLabel(QString::fromUtf8("widget_处理"));label->setStyleSheet("QLabel{font:60px}");QHBoxLayout* layoutMain = new QHBoxLayout();this->setLayout(layoutMain);//layoutMain->addWidget(label);layoutMain->setContentsMargins(0,0,0,0);QFrame *mainFrame = new QFrame();layoutMain->addWidget(mainFrame);QHBoxLayout* layoutMainFrame = new QHBoxLayout();layoutMainFrame->setContentsMargins(0,0,0,0);mainFrame->setLayout(layoutMainFrame);//帮助QFrame *helpFrame = new QFrame();QHBoxLayout* layoutHMenu1 = new QHBoxLayout();layoutHMenu1->setContentsMargins(0,0,0,0);layoutHMenu1->setSpacing(0);//1/打开帮助m_btnOpenHelp = new QToolButton();m_btnOpenHelp->setText(tr("打开帮助"));m_btnOpenHelp->setMaximumWidth(60);layoutHMenu1->addWidget(m_btnOpenHelp);//帮助小分类QLabel *lable1_1 = new QLabel(this);lable1_1->setText(tr("帮助"));lable1_1->setMaximumHeight(20);lable1_1->setAlignment(Qt::AlignCenter);QVBoxLayout* layoutVMenu1 = new QVBoxLayout();layoutVMenu1->setContentsMargins(0,0,0,0);layoutVMenu1->setSpacing(0);layoutVMenu1->addLayout(layoutHMenu1);layoutVMenu1->addWidget(lable1_1);helpFrame->setLayout(layoutVMenu1);layoutMainFrame->addWidget(helpFrame);//关于QFrame *aboutFrame = new QFrame();QHBoxLayout* layoutHMenu2 = new QHBoxLayout();layoutHMenu2->setContentsMargins(0,0,0,0);layoutHMenu2->setSpacing(0);//1/关于m_btnOpenAbout = new QToolButton();m_btnOpenAbout->setText(tr("关于"));m_btnOpenAbout->setMaximumWidth(60);layoutHMenu2->addWidget(m_btnOpenAbout);m_btnTranslate = new QToolButton();m_btnTranslate->setText(tr("翻译"));QObject::connect(m_btnTranslate,SIGNAL(clicked(bool)),this,SLOT(on_btnTranslate_clicked(bool)));m_btnTranslate->setMaximumWidth(60);layoutHMenu2->addWidget(m_btnTranslate);//关于小分类m_lable2_1 = new QLabel(this);m_lable2_1->setText(tr("关于"));m_lable2_1->setMaximumHeight(20);m_lable2_1->setAlignment(Qt::AlignCenter);QVBoxLayout* layoutVMenu2 = new QVBoxLayout();layoutVMenu2->setContentsMargins(0,0,0,0);layoutVMenu2->setSpacing(0);layoutVMenu2->addLayout(layoutHMenu2);layoutVMenu2->addWidget(m_lable2_1);aboutFrame->setLayout(layoutVMenu2);layoutMainFrame->addWidget(aboutFrame);//最后加弹簧QSpacerItem *spacer = new QSpacerItem(10, 20,QSizePolicy::Expanding,QSizePolicy::Minimum);layoutMainFrame->addItem(spacer);
}

这个界面是没有retranslateUi()这个函数的。
说说QT国际化的概念:
QT国际化(Internationalization,简称I18N)是指将一个软件应用程序的界面、文本、日期、数字等元素转化为不同的语言和文化习惯的过程。
这使得软件能够在不同的国家和地区使用,并且可以根据用户的语言和地区提供本地化的使用体验。
QT是一种跨平台的应用程序开发框架,提供了很多工具和功能来支持国际化。

过程

先看看,ui的这个函数到底做了什么,我们可以模仿这一个函数实现相应的功能,充分利用QT框架的东西:
在这里插入图片描述

原来是重新设置了一下文本相关的东西。
这让我们可以知道,执行了这段代码后:

qApp->removeTranslator(trans);delete trans;trans=new QTranslator;trans->load("samp16_1_cn.qm");qApp->installTranslator(trans);

语言已经翻译完了,但需要把翻译的结果,再放到界面上去,如果放到界面上去,就是需要手动的设置这些控件的文本,感觉有些笨似的,然而,却只能这样;如果用Ui设置器的话,Qt界面设计器会为我们自动生成这些代码,但我们没有用Qt界面设计器,所以也没有这些函数,只有我们自己去实现这些函数。
先看实现的效果:
在这里插入图片描述
在这里插入图片描述
我们是这样实现的:
首先是“翻译”按钮的实现逻辑:

void Widget::on_btnTranslate_clicked(bool checked)
{static bool isChinese = true;if(isChinese){qDebug()<<"isChinese="<<isChinese;if(trans){qApp->removeTranslator(trans);delete trans;}QString appDirPath = QCoreApplication::applicationDirPath();//QString fileName = appDirPath+"//translate1_cn.qm";QString fileName = QString(":/translate/translate1_cn.qm");trans=new QTranslator;trans->load(fileName);qApp->installTranslator(trans);qApp->processEvents();//this->update();isChinese = false;}else{qDebug()<<"isChinese="<<isChinese;if(trans){qApp->removeTranslator(trans);delete trans;}QString appDirPath = QCoreApplication::applicationDirPath();QString fileName = QString(":/translate/translate1_en.qm");//QString fileName = appDirPath+"//translate1_en.qm";trans=new QTranslator;trans->load(fileName);qApp->installTranslator(trans);qApp->processEvents();isChinese = true;}//ui->retranslateUi(this);
}

这个逻辑很简单,就是利用QT的函数实现了翻译工作,但是少了retranslateUi()函数的实现,如何实现这一个函数呢?
先定义一个事件:

void Widget::changeEvent(QEvent *event)
{if (event->type() == QEvent::LanguageChange) {retranslateUi();  // 语言变化时更新界面}QWidget::changeEvent(event);
}

再实现retranslateUi()函数:

void Widget::retranslateUi()
{m_btnOpenAbout->setText(tr("关于"));m_btnOpenHelp->setText(tr("打开帮助"));m_lable2_1->setText(tr("关于"));m_btnTranslate->setText(tr("翻译"));
}

这样就实现了翻译工作。
效果如下:

Qt界面国际化1

总结

用QT开发多语言界面程序,主要包括以下几个步骤
1)在程序设计阶段,程序代码中每一个用户可见的字符串都有tr()函数封装
2)在项目配置文件(.pro文件)中设置需要导出的翻译文件(.ts文件),使用lupdate工具扫描项目文件 中需要翻译的字符串,并生成翻译文件
3)使用Qt的Linguist程序打开后成的翻译文件,将程序中的字符串翻译为需要的语言,如将所中文字符串翻译为英文
4)使用lrelease工具编译翻译好的翻译文件,生成更为紧凑的".qm"文件。
5)在应用程序中用QTranslator调用不两年的".qm"文件,实现不同的语言界面。
关于手写代码界面的翻译,有如下关键部分:
翻译事件:

[virtual protected] void QWidget::changeEvent(QEvent *event)
This event handler can be reimplemented to handle state changes.
The state being changed in this event can be retrieved through the event supplied.
Change events include: QEvent::ToolBarChange, QEvent::ActivationChange, QEvent::EnabledChange, QEvent::FontChange, 
QEvent::StyleChange, QEvent::PaletteChange, QEvent::WindowTitleChange, QEvent::IconTextChange, QEvent::ModifiedChange, 
QEvent::MouseTrackingChange, QEvent::ParentChange,QEvent::WindowStateChange, QEvent::LanguageChange, QEvent::LocaleChange, QEvent::LayoutDirectionChange, QEvent::ReadOnlyChange.

这个过程体现了QT事件的灵活应用:
在这里插入图片描述


文章转载自:

http://3QU49Ljv.rkdnm.cn
http://8LyNE5Jm.rkdnm.cn
http://BFCvkhJW.rkdnm.cn
http://rj2dVtw8.rkdnm.cn
http://YWo1wcua.rkdnm.cn
http://PTryli8S.rkdnm.cn
http://xF9QOKFO.rkdnm.cn
http://sqdqck5z.rkdnm.cn
http://ErFNutaE.rkdnm.cn
http://ZRKf7qrN.rkdnm.cn
http://O0yJybm8.rkdnm.cn
http://5KSgqrnY.rkdnm.cn
http://CC3RQRk7.rkdnm.cn
http://bj6bE3Qg.rkdnm.cn
http://6m6i3bCo.rkdnm.cn
http://QrIQlAvJ.rkdnm.cn
http://DimmvDcA.rkdnm.cn
http://R0pq22G6.rkdnm.cn
http://vOb3bhhM.rkdnm.cn
http://R5iQ93uL.rkdnm.cn
http://v58xVLqt.rkdnm.cn
http://pxObnQ61.rkdnm.cn
http://fYhNCToG.rkdnm.cn
http://35ScsLqf.rkdnm.cn
http://gJOvQjxW.rkdnm.cn
http://Nz21RdjT.rkdnm.cn
http://1N9TvQWT.rkdnm.cn
http://r012CGcC.rkdnm.cn
http://t27FaFs7.rkdnm.cn
http://zpOIreQv.rkdnm.cn
http://www.dtcms.com/wzjs/759529.html

相关文章:

  • 世界各大网站搜索引擎提交入口哪个厂家的广州网站建设
  • 装企工长网站开发推盟
  • 浙江省建设局教育网站东莞网站建设 南城石佳
  • 佛山响应式网站公司免费素材库app图片
  • 自己做的网站怎么设置文件下载网站布局规划怎么写
  • 网站百度地图生成器在县城做团购网站
  • 上海做网站的公司是什么网站建设过时了
  • 网站广告如何做小程序推广赚佣金
  • 网站推广结束语山西省吕梁市天气
  • 万网 手机网站网站权重最高
  • 网站建设以后就业方向德阳市做网站
  • 学习网站的建设网站建设个人信息英文翻译
  • 外贸网站cms网站开发前端与后端区别
  • 大连房地产网站开发做网站运营这工作怎么样
  • 如何把网站做成软件58同城二手房
  • 毕业设计做网站可以用模版吗徐州百姓网招聘信息网
  • 学做美食网站短视频素材免费
  • 嘉兴网站制作维护家具网站建设规划
  • 做淘客网站需要企业的域名五一自学网免费教程官网
  • 北海网站设计公司企业网站主页设计图
  • 合肥做网站推广的公司广州网络推广有限责任公司
  • 建设一个网站的步骤有哪些广州seo教程
  • 做电影网站挣钱吗wordpress 一直崩溃
  • 网站部署到终端机怎么做网站上线倒计时 模板
  • 做排行的网站广州app设计公司
  • 公司创建网站要多少钱多人一起做视频网站
  • 网站关键词结构有名的外贸公司
  • 天工网官方网站设计师资源网站
  • 农业基本建设项目 网站基金管理公司司网站建设要求
  • 微信建设网站哪家好有没有女的做任务的网站