0

我对 C++ 和 Qt 很陌生。我在目前的项目上已经取得了相当大的进展,但我一直在推迟这一部分。我有一个按钮可以打开一个像这样的新对话框:

void MainWindow::on_fillAll_clicked()
{
    int yo;
    BlockSelect bSelect;
    bSelect.setModal(true);
    bSelect.exec();

    if( bSelect.exec() == QDialog::Accepted )
    {
        //Get stuff here?
        //I want to fill yo with the spinbox value
        yo = bSelect.stuff();
        return;
    }

    qDebug() << yo;
}

这工作正常。在对话框中,我有一个旋转框。当用户单击“确定”时,我想将输入到微调框的值发送到我的主窗口。

我一直在努力让“int yo;” 从 spinbox 中获得该值,但我尝试的所有操作都会出错。

我将此添加到我的 BlockSelect 公共课程中:

int stuff();

我在我的 blockselect.cpp 中创建了这个函数:

int BlockSelect::stuff()
{
    qDebug() << "The function was called";
    return ui->yolo->value();
}

但是 qDebug 从不显示任何东西???

那么如何在主窗口中用对话框中的 yolo 填充 yo 呢?

对不起,如果我没有很好地解释这一点:(我还在学习。谢谢你的时间:)

4

1 回答 1

1

首先,不需要调用 exec() 两次,只需在 if 语句中使用一次即可。

要回答您的问题,您仍然有 bSelect 对话框对象(我假设 BlockSelect 是您定义的类?),因此在其中创建一个访问器函数来检索您想要的值。

if( bSelect.exec() == QDialog::Accepted )
{
    //Get stuff here?
    //I want to fill yo with the spinbox value
    yo = bSelect.stuff();
    return;
}

编辑:

您的 BlockSelect 类需要包含一个访问器函数,这意味着一个返回值的函数。

int stuff() { return ui->yolo->value();}

我在这里所做的是检索 spinbox 的值(假设它被命名为 'yolo')并作为调用 'stuff' 函数的结果返回它。

于 2013-07-16T23:40:08.987 回答