(Qt C ++)从对话框发送int值到MainWindow?

时间:2013-07-16 23:34:52

标签: c++ qt dialog return qspinbox

我对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;
}

这很好用。在对话框中我有一个旋转框。我想在用户点击OK时将输入到旋转框的值发送到我的主窗口。

我一直在试图“直言不讳”从spinbox获得该值,但我尝试的所有内容都会出错。

我将此添加到我的BlockSelect公共类:

int stuff();

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

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

但是qDebug从来没有显示任何东西???

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

对不起,如果我没有解释清楚:(我还在学习。 谢谢你的时间:))

1 个答案:

答案 0 :(得分:1)

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

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

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'函数时返回它。