【问题标题】:(Qt C++) Send int value from dialog to MainWindow?(Qt C++) 将 int 值从对话框发送到 MainWindow?
【发布时间】:2013-07-16 23:34:52
【问题描述】:

我对 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?

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

【问题讨论】:

    标签: c++ qt dialog return qspinbox


    【解决方案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' 函数的结果返回它。

    【讨论】:

    • 哦!谢谢你告诉我关于 exec 的事情。 :) 我在我的 blockselect.cpp(对话框 cpp)中创建了这个 void BlockSelect::stuff() { int yolo(5); }
    • 我试图将 yo = bSelect.stuff(yolo) 放在我的 if 语句中,但没有用
    • 我将我所做的添加到我的 BlockSelect 类和 blockselect.cpp 到我的原始帖子中。我只是不明白在 if 语句中放入什么来获取 spinbox 值。
    • 根据您的定义,bSelect.stuff() 返回 void 并且不带任何参数,那么 'yo = bSelect.stuff(yolo);' 怎么样应该工作吗?
    • 它没有调用 stuff 函数。我更改了操作以显示我根据您的回答所做的更改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多