Jestem nowy w C++ i Qt i próbuję uzyskać dostęp do widgetu z klasy nadrzędnej.C++ dostęp do widżetów nadrzędnych z funkcji
Oto moja mainwindow.cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
mam inną klasę, a ja staram się dostęp widget z „Ul” w tej klasie. Podobnie jak:
DashBoard::DashBoard(MainWindow *parent) : QObject(parent)
{
}
void DashBoard::select()
{
parent->ui->menuSL->setCurrentIndex(0);
}
Daje mi to błąd, że metod i pól nie można rozwiązać. Ale kiedy wstawiam linię parent->ui->menuSL->setCurrentIndex(0);
do konstruktora, nie ma problemu.
Czy ktoś mógłby wskazać mój błąd?
Powinieneś raczej emitować sygnał w swojej funkcji 'DashBoard :: select()' i podłącz go do swojego '' menSL' obiektu 'setCurrentIndex (int)' lub do funkcji w twojej klasie 'MainWindow'. – thuga
Zgadzam się z thuga. Emitowanie sygnału z DashBoard jest lepszym podejściem. – drescherjm
Nie polecam bezpośredniego dostępu do 'ui' twojego rodzica. Zamiast tego wyprowadź swojego rodzica z interfejsu ze zdefiniowanymi metodami dostępowymi, które można wywołać z twojego dziecka. Przykładowe wywołanie: dynamic_cast (parent()) -> SetMenu (0); Lub użyj koncepcji sygnału/gniazda. –
bkausbk