簡體   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