如何从一个 class (window UI) 访问另一个 class 中的 QString 值?

How to access QString value from one class (window UI) in another class?

我正准备编写一个小型桌面应用程序来捕捉同事的工作时间。它必须根据我们的需要进行定制,因此商业解决方案不是一种选择(+我们没有钱)。

我正在使用 Qt (5.11.2) 和 C++。我有一个 MainWindow(第一个 window UI),它使用自动完成从 sqlite3 数据库中获取信息(ID、名称、组长...)并填充 QLineEdits。这部分工作正常。 现在,我创建了第二个 window UI 来捕获员工的实际工作时间。我想在这一秒 window 中向用户显示其工作时间被捕获的员工的姓名和 ID。这些信息应该从第一个 window class.

我试图在我的第一个 window class 中创建名称变量 public 但由于某些原因我无法在我的第二个 window 中访问该变量class,我也尝试过使用 getter 和 setters,但无济于事。当我使用 getter 和 setters 时,我可以在 setter 中手动插入一个字符串并且它正在工作。但我想从第一个 window 的 lineEdit 中获取字符串的值(参见小代码片段)

QString tabname_temp = ui->lineEdit_Tabname->text(); // get name from lineEditf; from first window UI

我想使用这个 tabname_temp 变量,并用它在第二个 UI window class 的标签中显示这个字符串值。 =19=]

第一个 window class 中的吸气剂和 setter 看起来像这样:

public:
    void setName(QString name);
    QString getName() const {return name;}

private:
    QString name;

setName 的实现如下所示:

void MainWindow::setName(QString name){
    this->name = name;
}

长时间的 google fu 无济于事。我敢肯定,我在这里错过了一些关键的东西。我希望我清楚我在寻找什么。请让我知道是否以及如何改进这个问题。

编辑:这就是我创建第二个 window UI (mainwindow.h) 的方式:

private:
    Ui::MainWindow *ui;
    WindowActivity *activityWindow; // second window

这是我来自 mainwindow.cpp 的代码:

void MainWindow::on_Btn_Activity_clicked()
{
    activityWindow = new WindowActivity(this);
    activityWindow->resize(700,700);
    activityWindow->show();
}

I have tried to make the name variable public in my first window class but for some reason I couln't access the variable in my second window class

这是一种错误的做法。 MainWindow 应该看到(了解)WindowActivity,而不是相反。

要访问 WindowActivity class 中 ui->lineEdit_Tabname 的值,请执行以下操作:

  1. 添加一个public setName方法到WindowActivity

    void setName(const QString &name);
    
  2. 像这样在 activityWindow = new WindowActivity(this); 之后调用 WindowActivity::setName

    activityWindow->setName(ui->lineEdit_Tabname->text());