QT信号和时隙将变量传递到另一种形式

QT signal and slot pass variable to another form

本文关键字:另一种 变量 信号 时隙 QT      更新时间:2023-10-16

我在谷歌上搜索了10个小时,没有任何帮助。

我在QT中有两个形式(.ui)。

第一个主窗口.ui - 我这里有表,当用户单击表行时,它会将此表行的值发送到

第二个 zobraz.ui

主窗口.h

signals:
    void sendIntData(int data);

主窗口.cpp

void MainWindow::on_tableView_doubleClicked(const QModelIndex &index)
{
zobraz1 = new zobraz(this);
zobraz1->show();
int o=index.row();
QString oo=QString::number(o);
ui->textEdit->setText(oo);
emit sendIntData(o);
connect(this, SIGNAL(sendIntData(int)),zobraz1, SLOT(setIntData(int)));
}

佐布拉兹·

public slots:
    void setIntData(int data);
public:
    explicit zobraz(QWidget *parent = 0);
    ~zobraz();
private:
    Ui::zobraz *ui;
    int indexx;
};

佐布拉兹.cpp

void zobraz::setIntData(int data)
{
    indexx=data;
} 
zobraz::zobraz(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::zobraz)
{
    ui->setupUi(this);
    QString poradiee=QString::number(indexx);
    ui->label_2->setText(poradiee);

非常感谢您的回答,我不知道什么是不好的。

我没有

测试你的代码,但有一个问题与连接有关:必须在发出信号之前完成连接。所以你应该改变这些行:

emit sendIntData(o);
connect(this, SIGNAL(sendIntData(int)),zobraz1, SLOT(setIntData(int)));

自:

connect(this, SIGNAL(sendIntData(int)),zobraz1, SLOT(setIntData(int)));
emit sendIntData(o);

setintdata的问题vas。它应该看起来像这样。但IDK为什么。

void zobraz::setIntData(int data)
{
    QString poradieee=QString::number(data+1);
    ui->label_2->setText(poradieee);
    indexx=data;
}