Qt5 пользовательский интерфейс, несколько windows: как я могу получить доступ к объектам пользовательского интерфейса в окне 2 из окна 1 - PullRequest
0 голосов
/ 08 января 2020

Я знаю, что это очень неуклюже, и я, вероятно, делаю много неправильных вещей, но пока все, что я видел на net, возвращает те же ошибки: недопустимое использование нестандартного c элемента данных.

Итак, в MainWindow у меня есть comboBox с именем hometeam , и я хочу отобразить currentText на Qlabel с именем label , который находится в другом классе формы с именем Диалог

Я подумал, что они оба закрытые члены, поэтому я добавил класс друга MainWindow и диалог класса друга в соответствующих заголовках (я знаю это довольно неправильно, но это последнее, что я пробовал), я включил "ui_mainwindow" и "ui_dialog" в файлы. cpp, и вот фрагмент кода, который я пытаюсь:

   ui->label->setText(MainWindow::ui->hometeam->currentTex());

Имейте в виду, что я не хочу QDialog, второе окно будет делать гораздо больше, чем дисплей, я просто хочу получить доступ к объектам из другого окна. Слоты и сигналы дают одинаковую ошибку.

Спасибо!

1 Ответ

0 голосов
/ 08 января 2020

Я думаю, что правильный способ сделать это - добавить функцию к вашему MainWindow классу:

QString hometeamText() const
{
    return ui->hometeam->currentTex();
}

Таким образом, вы сможете получить доступ к необходимой информации, не нарушая правила инкапсуляции, но вам нужно экземпляр из MainWindow, чтобы сделать это, и обязательно должен иметь указатель на него в вашем Dialog классе:

class Dialog
{
private:
    MainWindow * mainwindow;
public:
    void setMainWindow(MainWindow * w) { mainWindow = w; }

, а затем где-нибудь (например, в main) вы может сделать что-то вроде:

MainWindow mainwindow;
Dialog dialog;
dialog.setMainWindow(&mainWindow);

и внутри вашего Dialog класса, где вам это нужно:

ui->label->setText(window->hometeamText());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...