c ++从函数访问父窗口小部件

use*_*217 8 c++ qt

我是C++和Qt的新手,我正在尝试从父类访问一个小部件.

这是我的mainwindow.cpp

MainWindow::MainWindow( QWidget *parent )
    : QMainWindow( parent )
    , ui( new Ui::MainWindow ) 
{
    ui->setupUi(this);
}
Run Code Online (Sandbox Code Playgroud)

我有另一个类,我试图从该类中的"ui"访问一个小部件.像这样:

DashBoard::DashBoard( MainWindow *parent ) : QObject( parent ) 
{
}

void DashBoard::select(  ) 
{
    parent->ui->menuSL->setCurrentIndex(0);
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误,说无法解决方法和字段.但是当我把这一行parent->ui->menuSL->setCurrentIndex(0);放在构造函数中时,没有问题.

有人请指出我的错误吗?

Kai*_*alz 2

在您的 select 方法中,您尝试使用名为 的变量parent。但你需要QObject::parent()方法。

此外,您需要将父级强制转换为QMainWindow.

void DashBoard::select(  ) {
  QMainWindow* parent = qobject_cast<QMainWindow>(this->parent());
  if (parent == 0) { return; } // or some other error handling
  parent->ui->menuSL->setCurrentIndex(0);
}
Run Code Online (Sandbox Code Playgroud)

您只能ui在公开的情况下访问。

总而言之,我认为您应该在MainWindow类中提供一个方法来执行您想要的操作。