Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将信号从主窗口连接到对话框中的插槽_C++_Qt - Fatal编程技术网

C++ 如何将信号从主窗口连接到对话框中的插槽

C++ 如何将信号从主窗口连接到对话框中的插槽,c++,qt,C++,Qt,我的主窗口中有一个信号,可以发出一个行编辑中的数字。当我单击按钮打开对话框时,我希望将该数字复制到对话框中的行编辑中。我无法让它连接。我可以看到信号是用qDebug发出的。我连接错了还是在错误的地方?我试过很多方法。下面是我的代码片段 主窗口 //我的主窗口 MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(新ui::MainWindow){ 用户界面->设置用户界面(此); //这是我试图发送到对话框的号码 ui->c

我的主窗口中有一个信号,可以发出一个行编辑中的数字。当我单击按钮打开对话框时,我希望将该数字复制到对话框中的行编辑中。我无法让它连接。我可以看到信号是用qDebug发出的。我连接错了还是在错误的地方?我试过很多方法。下面是我的代码片段

主窗口


//我的主窗口
MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(新ui::MainWindow){
用户界面->设置用户界面(此);
//这是我试图发送到对话框的号码
ui->checkingAmount->setText(QString::number(1000.00,'f',2));
ui->checkingAmount->setReadOnly(真);
}
//在这里发出数据
void MainWindow::on\u transferButton\u clicked(){
transferWindow=新的transferWindow(此);
transferWindow->show();
//试图发出数据
QString data=ui->checkingAmount->text();
发出shareCheckingData(数据);
qDebug()检查装入->设置只读(true);
ui->checkingAmount->setText(QString::number(CheckTotal));

qDebug()我在代码的注释中注意到,您打算创建
MainWindow
的实例,并尝试连接到此实例,这是一个不同于前一个实例的新实例,因此您将无法获取它

首先,我们必须创建实例,然后连接它,这可以在构造函数中完成

main window.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->checkingAmount->setText(QString::number(1000.00, 'f', 2));
    ui->checkingAmount->setReadOnly(true);

    transferWindow = new TransferWindow(this);

    connect(this, &MainWindow::shareCheckingData, transferWindow, &TransferWindow::getAmountFromMainWin);
    //old style
    //connect(this, SIGNAL(shareCheckingData(QString)), transferWindow, SLOT(getAmountFromMainWin(QString)));
}

void MainWindow::on_transferButton_clicked()
{

    //trying to emit the data
    QString data =ui->checkingAmount->text();
    emit shareCheckingData(data);
    qDebug()<<"emitting mainwin amount";

    transferWindow->show();

}
TransferWindow::TransferWindow(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::TransferWindow)
{
    ui->setupUi(this);
}

void TransferWindow::getAmountFromMainWin(QString n)
{
    float CheckTotal = n.toFloat();
    ui->checkingAmount->setReadOnly(true);
    ui->checkingAmount->setText(QString::number(CheckTotal));
    qDebug()<<"setting amount";
}
MainWindow::MainWindow(QWidget*父项):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
ui->checkingAmount->setText(QString::number(1000.00,'f',2));
ui->checkingAmount->setReadOnly(真);
transferWindow=新的transferWindow(此);
连接(此,&MainWindow::shareCheckingData,transferWindow,&transferWindow::getAmountFromMainWin);
//旧式
//连接(此、信号(shareCheckingData(QString))、传输窗口、插槽(getAmountFromMainWin(QString));
}
void主窗口::在按钮上单击()
{
//试图发出数据
QString data=ui->checkingAmount->text();
发出shareCheckingData(数据);
qDebug()setupUi(此);
}
void TransferWindow::getAmountFromMainWin(QString n)
{
float CheckTotal=n.toFloat();
ui->checkingAmount->setReadOnly(真);
ui->checkingAmount->setText(QString::number(CheckTotal));

谢谢你eyllanesc.你在好几个场合帮助过我,我很感激。
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->checkingAmount->setText(QString::number(1000.00, 'f', 2));
    ui->checkingAmount->setReadOnly(true);

    transferWindow = new TransferWindow(this);

    connect(this, &MainWindow::shareCheckingData, transferWindow, &TransferWindow::getAmountFromMainWin);
    //old style
    //connect(this, SIGNAL(shareCheckingData(QString)), transferWindow, SLOT(getAmountFromMainWin(QString)));
}

void MainWindow::on_transferButton_clicked()
{

    //trying to emit the data
    QString data =ui->checkingAmount->text();
    emit shareCheckingData(data);
    qDebug()<<"emitting mainwin amount";

    transferWindow->show();

}
TransferWindow::TransferWindow(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::TransferWindow)
{
    ui->setupUi(this);
}

void TransferWindow::getAmountFromMainWin(QString n)
{
    float CheckTotal = n.toFloat();
    ui->checkingAmount->setReadOnly(true);
    ui->checkingAmount->setText(QString::number(CheckTotal));
    qDebug()<<"setting amount";
}