Я собираюсь запрограммировать небольшое настольное приложение для захвата рабочего времени моих коллег по работе. Он должен быть адаптирован к нашим потребностям, поэтому коммерческое решение не вариант (+ у нас нет денег).
Я использую 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();
}
Я пытался сделать переменную name общедоступной в моем первом классе окна, но по какой-то причине я не смог получить доступ к переменной во втором классе окна
Это неправильный подход. MainWindow
должен видеть (знать о) WindowActivity
, А не наоборот.
Чтобы получить доступ к значению ui->lineEdit_Tabname
в пределах WindowActivity
класс, сделайте следующее:
Добавить общедоступный setName
метод для WindowActivity
void setName(const QString &name);
Вызов WindowActivity::setName
после activityWindow = new WindowActivity(this);
как это
activityWindow->setName(ui->lineEdit_Tabname->text());
Других решений пока нет …