注:以下内容仅为作者初学者的看法。
实现效果: 在主界面中按下按钮,将参数值传递给另一个窗口并显示。
connect(this,SIGNAL(sentNums(int)),start_dialog,SLOT(setGuessNums(int)));
第一个参数: 发送者
第二个参数: 发送的信号
第三个参数: 接收者
第四个参数: 接收信号的SLOT
1.首先在发送者主界面的头文件中加入
#include “startdialog.h”
signals:
void sentNums(int); // 要发送的信号量
#include "startdialog.h"
private slots:
void on_btStart_clicked();
private:
Ui::MainWindow *ui;
startDialog *start_dialog;
signals:
void sentNums(int);
};
2.然后在mainwindow.cpp的构造函数中写入connect函数
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
start_dialog = new startDialog(this);
connect(this,SIGNAL(sentNums(int)),start_dialog,SLOT(setGuessNums(int)));
}
void MainWindow::on_btStart_clicked()
{ // 按钮点击事件发送信号
int level = ui->sbLevel->value();
GenerateNumber g(level);
emit sentNums(g.getA());
start_dialog->show();
}
- 在接收者界面的头文件中定义自定义槽
startdialog.h
public slots:
void setGuessNums(int a);
startdialog.cpp
void startDialog::setGuessNums(int a) {
// a就是主界面传过来的数字
ui->lbLevel->setText(tr("当前难度:%1").arg(a));
//ui->lbLevel->setText(A+"");
};