Как мне получить значение объекта из одного окна в класс другого окна с помощью Qt Creator? - PullRequest
1 голос
/ 14 июня 2011

Кажется, это должен быть простой вопрос. У меня есть два QSpinBox в моем MainWindow, с кнопкой рядом с ними. Пользователь сначала выбирает размеры массива флажков, используя эти поля прокрутки, а затем нажимает кнопку. Это открывает новое окно с массивом флажков в нем. Проблема, с которой я столкнулся, заключается в том, что когда я пытаюсь получить значение spinbox в коде моего всплывающего окна, я получаю ошибку компилятора, потому что эти кнопки являются закрытыми. Вот код:

void DomainGeneration::createBoxes()
{
    int x_dim = MainWindow::ui->xDim->value();
    int y_dim = MainWindow::ui->yDim->value();
......the code......
}

Ошибки компиляции:

'Ui :: MainWindow * MainWindow :: ui' личное в этом контексте

и

объект отсутствует в ссылке на 'MainWindow :: ui' из этого местоположения

Итак, мой вопрос, как мне получить доступ к этим объектам из другого окна?

1 Ответ

3 голосов
/ 14 июня 2011

У вас есть две проблемы:

  1. MainWindow::ui является частным
  2. MainWindow::ui не является статическим, вам необходим фактический экземпляр MainWindow, чтобы достичь его

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

Чтобы решить два, вам нужен указатель наВаш MainWindow экземпляр для вызова этих методов доступа.

В вашем классе MainWindow определите что-то вроде:

int getXDim() const { return ui->xDim->value(); }

И чтобы получить указатель на главное окно, либо передайте его вконструктор вашего DomainGeneration, или в этот createBoxes() метод, в зависимости от того, как / где они вызываются, и понадобится ли вам этот указатель в другом месте в этом классе.

(Или просто передайте измерения этим методам, очевидно.)

(Ничто из этого не относится к Qt. Это простой C ++.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...