我已经写了一个小程序时按钮点击从一种形式(主窗口)将数据发送到另一个(对话框)。单击按钮时,写在MainWindow的lineEdit中的值将以对话框形式显示在标签上!信号和(++ Qt的c)中时隙错误的值发送
当我点击显示在标签上的值的按钮,但它是不一样的行编辑输入的值! 以下是2个头文件和2个cpp文件中的相应代码!
MainWindow.h
class MainWindow : public QMainWindow
{
Q_OBJECT
signals:
void sendIntData(int data);
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
}
MainWIndow.cpp
void MainWindow::on_pushButton_clicked()
{
Dialog *dialog1=new Dialog(this);
dialog1->setModal(true);
dialog1->exec();
int o=ui->lineEdit->text().toInt();
connect(this, SIGNAL(sendIntData(int)),dialog1, SLOT(setIntData(int)));
emit sendIntData(o);
}
Dialog.h
class Dialog : public QDialog
{
Q_OBJECT
public slots:
void setIntData(int data);
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
}
Dialog.cpp
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::DIalog)
{
ui->setupUi(this);
QString value=QString::number(index);
ui->label->setText(value);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::setIntData(int data)
{
index=data;
}
例如 - 当我点击3并按下按钮时,我得到一个值7237481!我该如何解决这个问题?
为什么你的连接是'emit'信号后,发出写?把'connect(这个,SIGNAL(sendIntData(int)),dialog1,SLOT(setIntData(int)));'发出信号之前。 – aghilpro
@aghilpro Thanx我改变了,但我仍然得到错误的价值! :( –
把这个'qDebug()<< O; EMIT前'行,看到的价值是什么,你在LineEdit – aghilpro