如何从另一个类的一个类(窗口UI)访问QString值?

时间:2018-11-15 09:57:34

标签: c++ qt class data-transfer

我将要编写一个小型桌面应用程序,以捕获同事的工作时间。它必须根据我们的需求进行定制,因此不能选择商业解决方案(而且我们没有钱)。

我正在使用Qt(5.11.2)和C ++。我有一个MainWindow(第一个窗口UI),该窗口使用自动完成功能从sqlite3数据库中获取信息(ID,名称,组长等),并填充QLineEdits。这部分工作正常。 现在,我创建了第二个窗口UI,以捕获员工的实际工作时间。我想在第二个窗口中向用户显示其工作时间受到限制的员工的姓名和ID。这些信息应从第一个窗口类中检索。

我试图在我的第一个窗口类中公开名称变量,但是由于某种原因,我无法访问我的第二个窗口类中的变量,并且我也尝试使用getter和setter,但无济于事。当我使用getter和setter时,我可以在setter中手动插入一个字符串,它可以正常工作。但是我想从第一个窗口的lineEdit中获取字符串的值(请参见小代码段)

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

我想使用这个tabname_temp变量,并使用它在第二个UI窗口类中的带有此字符串值的标签中显示。

第一个窗口类中的getter和setter看起来像这样:

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

private:
    QString name;

setName的实现如下所示:

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

长时间的谷歌搜索引擎无济于事。我敢肯定,我在这里想念一些重要的事情。我希望我明确了我要寻找的东西。请让我知道是否以及如何改善这个问题。

编辑:这是我创建第二个窗口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();
}

1 个答案:

答案 0 :(得分:1)

  

我试图在第一个窗口类中公开名称变量,但由于某种原因,我无法在第二个窗口类中访问变量

这是错误的方法。 MainWindow应该会(了解)WindowActivity,而不是相反。

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

  1. 将公共setName方法添加到WindowActivity

    void setName(const QString &name);
    
  2. WindowActivity::setName之后致电activityWindow = new WindowActivity(this);

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