繁体   English   中英

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

[英]Transferring a string from one .cpp file to another

晚上好,我正在开发一个项目,要求我在一个.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();
}

每当我点击patientDatabase中提供的表格上的patientId时,此功能基本上会将窗口更改为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

我不想使用全局变量但是坚持到这里并且不确定如何处理它。

如果您不想使用全局变量,最好分享您的类,我们可以考虑您当前的设计。 否则,下面有一个全球方法。

您将在头文件中定义名为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变量。

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

使用全局变量听起来不太好,尽管它有效!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM