버튼 클릭시 한 폼 (MainWindow)에서 다른 폼 (Dialog)으로 데이터를 보내기위한 작은 프로그램을 작성했습니다. 버튼을 클릭하면 MainWindow의 lineEdit에 쓰여진 값이 Dialog 폼의 레이블에 표시됩니다!신호 및 슬롯 잘못된 값 전송 (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! 이 문제를 어떻게 해결할 수 있습니까?
에서 방출? '신호를 보내기 전에 connect (this, SIGNAL (sendIntData (int)), dialog1, SLOT (setIntData (int)));를 넣는다. – aghilpro
@aghilpro 고맙습니다.하지만 저는 여전히 잘못된 가치를 가지고 있습니다. : –
방출하기 전에이'qDebug() << o;'줄을 넣고 값을 봅니다 LineEdit에서 쓰는 값은 무엇입니까? – aghilpro