从一个.cpp文件传递字符串到另一个文件

3

晚上好,我正在做一个需要在一个.cpp文件中使用字符串变量,并在下一个.cpp文件中使用相同字符串变量的项目。这是我的patientdatabase.cpp:

void patientDatabase::on_tableView_view_activated(const QModelIndex &index)
{
 QString value = ui->tableView_view->model()->data(index).toString();
 patientR.connOpen();
 QSqlQuery qry;
 qry.prepare("select * from imageTable where PatientId = '"+value+"'");
if (qry.exec()){
    IVDB *x = new IVDB;
    x->show();
}

这个函数的基本作用是当我在我的病人数据库提供的表格上点击患者ID时,将窗口更改为IVBD。现在我需要在我的IVBD.cpp中使用字符串'value'。

QSqlQuery *qry = new QSqlQuery(registration.db);
qry->prepare("select * from imageTable where PatientId ='"+value+"'");    // this string 'value; is from the last .cpp file

我不想使用全局变量,但卡在这里,不确定如何解决。
2个回答

1

我能想到的最好的解决方案是使用信号和槽。在on_tableView_view_activated中,您应该发出一个信号并在IVBD.cpp中捕获它。

虽然全局变量可以工作,但听起来不太好。


0

如果您不想使用全局变量,最好共享您的类,我们可以根据您当前的设计进行思考。否则,下面有一种全局方法。

您将在头文件中定义一个名为value的全局变量,并在定义时使用extern关键字。这意味着有一个全局的value变量,它只创建一次,每个.cpp文件都包含该头文件将使用相同的变量。让我写一个例子。

假设您有一个定义字符串值的common.h文件:

extern std::string value;

你有两个不同的 .cpp 文件,它们共享这个公共值。在 file1.cpp 中创建那个 value

file1.cpp:

#include "common.h"

std::string value;

void fooInFile1() {
    value = "Changed from fooInFile1!";
}

file2.cpp

#include "common.h"

void fooInFile2() {
    value = "Changed from fooInFile2!";
}

在这个例子中,file1.cpp和file2.cpp都会影响同一个value变量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接