Как получить доступ к значению QString из одного класса (оконный интерфейс) в другом классе?

Я собираюсь запрограммировать небольшое настольное приложение для захвата рабочего времени моих коллег по работе. Он должен быть адаптирован к нашим потребностям, поэтому коммерческое решение не вариант (+ у нас нет денег).

Я использую Qt (5.11.2) и C ++. У меня есть MainWindow (первый интерфейс окна), который использует автозаполнение, чтобы получить информацию (ID, имена, групповые лидеры, …) из базы данных sqlite3 и заполнить QLineEdits. Эта часть работает просто отлично.
Теперь я создал интерфейс второго окна, чтобы зафиксировать фактическое рабочее время сотрудника. Я хотел бы представить пользователю во втором окне имя и идентификатор сотрудника, чье рабочее время в будущем. Эти данные должны быть получены из первого класса окна.

Я попытался сделать переменную имени общедоступной в своем первом классе окна, но по какой-то причине я не смог получить доступ к переменной во втором классе окна, и я также попытался использовать методы получения и установки, но безрезультатно. Когда я использую геттеры и сеттеры, я могу вручную вставить строку в сеттер, и она работает. Но я хотел бы получить значение строки из lineEdit из первого окна (см. Небольшой фрагмент кода)

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

Я хотел бы работать с этой переменной tabname_temp и использовать ее для отображения в метке с этим строковым значением во втором классе окна пользовательского интерфейса.

Методы получения и установки в первом классе окна выглядели так:

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

private:
QString name;

Реализация setName выглядела так:

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

Долгие часы гугл фу были безрезультатны. Я уверен, что я упускаю что-то важное здесь. Я надеюсь, что я ясно дал понять, что я ищу. Пожалуйста, дайте мне знать, если и как я могу улучшить этот вопрос.

РЕДАКТИРОВАТЬ: Вот как я создаю второй интерфейс окна (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

Решение

Я пытался сделать переменную name общедоступной в моем первом классе окна, но по какой-то причине я не смог получить доступ к переменной во втором классе окна

Это неправильный подход. 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());
    
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector