如何从一个 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
的值,请执行以下操作:
添加一个public setName
方法到WindowActivity
void setName(const QString &name);
像这样在 activityWindow = new WindowActivity(this);
之后调用 WindowActivity::setName
activityWindow->setName(ui->lineEdit_Tabname->text());
我正准备编写一个小型桌面应用程序来捕捉同事的工作时间。它必须根据我们的需要进行定制,因此商业解决方案不是一种选择(+我们没有钱)。
我正在使用 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
的值,请执行以下操作:
添加一个public
setName
方法到WindowActivity
void setName(const QString &name);
像这样在
activityWindow = new WindowActivity(this);
之后调用WindowActivity::setName
activityWindow->setName(ui->lineEdit_Tabname->text());