小编Haz*_*maa的帖子

如何动态翻译qt应用程序?

我有一个用英语和阿拉伯语两种语言编写的程序,位于名为 app_en 和 app_ar 的文件中。我可以使用 QApplication 中的 installTranslator 在 main 的开头翻译程序。我的问题是如何通过推动 QAction 来更改程序的语言?

这是我的尝试:

我将我的语言 QAction 连接到一个插槽,该插槽获取用户选择的语言,然后保存它并转到另一个功能来安装翻译。这一切都发生在 QMainWindow 之外。

void MainCore::GetAndSaveLanguage(bool){
    //Getting the language the users wants.
    bool OKPressed;
    QString Language = QInputDialog::getItem(NULL, InputDialogString, InputDialogString + ":", Languages, 0, false, &OKPressed)
                        .remove(QRegExp("*(", Qt::CaseSensitive, QRegExp::Wildcard)).remove(')');

    //Checking if ok button was pressed.
    if(OKPressed){
        //Saving the languages.
        Settings->beginGroup("Settings");
        Settings->setValue("Language", Language);
        Settings->endGroup();

        //Update language.
        UpdateTranslations(Language);
     }
}

void MainCore::UpdateTranslations(QString Language){
    //Setting the translation for the qt widgets.
    QTranslator QtTranslator;
    QtTranslator.load("qt_" + Language, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
    QApplication::instance()->installTranslator(&QtTranslator); …
Run Code Online (Sandbox Code Playgroud)

c++ qt translation qt5

5
推荐指数
1
解决办法
2269
查看次数

无法通过引用传递从函数返回的指针

为什么我需要中间变量来通过引用传递我的返回指针而不是只使用返回该指针的函数?

这不编译

int main ()
{
  testfunc(getpointer());
  return 0;
} 
Run Code Online (Sandbox Code Playgroud)

错误:C2664:'void testfunc(int*&)':无法将参数1从'int*'转换为'int*&'

这编译

int main ()
{
   int *i = getpointer();
   testfunc(i);
   return 0; 
} 
Run Code Online (Sandbox Code Playgroud)

我的两个功能

void testfunc(int *& i) // I have to use this interface
{
  cout << i[0] <<endl;
}

int* getpointer()
{
  int * arr1 = new int[1];
  arr1[0]=10;
  return arr1;
}
Run Code Online (Sandbox Code Playgroud)

c++ c++98

1
推荐指数
1
解决办法
155
查看次数

C++程序的意外输出

我在turbo C编译器中编译了以下代码

void main()
{
  int i =400*400/400;

  if(i==400)
    cout<<"Filibusters";
  else
    cout<<"Sea ghirkins";
}
Run Code Online (Sandbox Code Playgroud)

我预期的值"i"的400,因此,输出应为无限制演讲.但是,我得到的输出是Sea Ghirkins.这怎么可能?

c++

-5
推荐指数
1
解决办法
108
查看次数

查看内存中的双变量

我正在研究程序如何在内存中保存数据.所以我创建了一个包含全局双变量的简单程序:

#include <iostream>
#include <conio.h>

using namespace std;

double b = 512;

int main(){
    getch();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我想从任何读取内存的程序(在我的案例中为CheatEngine)中搜索内存中的这个双变量时,我看到一些不清楚的东西.

CheatEngine在内存中找到512:

第一张图片

当我将其转换为十六进制时,它显示:

第二张图片

当我在内存中浏览此变量的位置时,它就像:

第3张图片

所以我将512从十进制转换为十六进制,它是200,但在第二张图片中没有类似的200.

第二张图片中的4080000000000000是多少,它是如何等于512的?

c++ memory double cheat-engine

-6
推荐指数
1
解决办法
1444
查看次数

标签 统计

c++ ×4

c++98 ×1

cheat-engine ×1

double ×1

memory ×1

qt ×1

qt5 ×1

translation ×1