我谷歌搜索了10个小时,没有任何帮助我。
我在QT中有两个表单(.ui)。
第一个mainwindow.ui - 我有这里的表,当用户点击表格行时,它会将此表格行的值发送到
第二次zobraz.ui
mainwindow.h
signals:
void sendIntData(int data);
mainwindow.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)));
}
zobraz.h
public slots:
void setIntData(int data);
public:
explicit zobraz(QWidget *parent = 0);
~zobraz();
private:
Ui::zobraz *ui;
int indexx;
};
zobraz.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);
非常感谢您的回答,我不知道什么是坏事。
答案 0 :(得分:0)
我没有测试你的代码,但有一个问题与连接有关:连接必须在发出信号之前完成。所以你应该改变这些行:
emit sendIntData(o);
connect(this, SIGNAL(sendIntData(int)),zobraz1, SLOT(setIntData(int)));
为:
connect(this, SIGNAL(sendIntData(int)),zobraz1, SLOT(setIntData(int)));
emit sendIntData(o);
答案 1 :(得分:0)
setintdata的问题。它看起来应该是这样的。但是IDK为什么。
void zobraz::setIntData(int data)
{
QString poradieee=QString::number(data+1);
ui->label_2->setText(poradieee);
indexx=data;
}