c++ - 我如何使用 Qt Creator 将一个对象的值从一个窗口获取到另一个窗口的类中?

标签 c++ qt

这看起来应该是一个简单的问题。我的 MainWindow 中有两个 QSpinBoxes,旁边有一个按钮。用户首先使用这些旋转框选择复选框数组的维度,然后单击按钮。这会弹出一个新窗口,其中包含复选框数组。我遇到的问题是,当我尝试在弹出窗口的代码中获取旋转框的值时,出现编译器错误,因为这些按钮是私有(private)的。这是代码:

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

编译器错误:

'Ui::MainWindow* MainWindow::ui' is private within this context

object missing in reference to 'MainWindow::ui' from this location

所以我的问题是,如何从不同的窗口访问这些对象?

最佳答案

你有两个问题:

  1. MainWindow::ui 是私有(private)的
  2. MainWindow::ui 不是静态的,您需要 MainWindow 的实际实例才能访问它

要解决一个问题,您通常会在 MainWindow(或任何需要导出其某些状态的类)中创建访问器方法。

要解决两个问题,您需要一个指向您的 MainWindow 实例的指针来调用这些访问器。

在您的 MainWindow 类中,定义如下内容:

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

要获得指向主窗口的指针,要么将其传递给 DomainGeneration 的构造函数,要么传递给 createBoxes() 方法,具体取决于它们的调用方式/位置以及您是否在该类的其他地方将需要该指针。

类似于:

void DomainGeneration::createBoxes(MainWindow const* main)
{
  int x_dim = main->getXDim();
  ...
}

(或者显然只是将维度传递给该方法。)

(这些都不是特定于 Qt 的。这是普通的 C++。)

关于c++ - 我如何使用 Qt Creator 将一个对象的值从一个窗口获取到另一个窗口的类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6348616/

相关文章:

c++ - Qt:从QTableWidget中的按钮获取文本

c++ - 为什么引用上的 constexpr 函数不是 constexpr?

c++ - 子类是否需要 Q_INTERFACES 宏?

c++ - 确定鼠标是否在特定布局上

c++ - Qt异常处理——try catch

python - QGraphicsScene 中的视觉像素完美选择

c++ - BGL 自定义图 connected_components

c++ - move lambda : once you've move-captured a move-only type, 如何使用 lambda?

c++ - 为什么 MinGW 4.9 显示缺少符合标准的正确代码的初始化程序警告

qt - QWidget 派生类不可见