2017-01-28 22 views
1

私は10時間以内にグーグルで何も助けませんでした。QTシグナルとスロットは別の形式に変数を渡します

QTには2つのフォーム(.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

私はあなたのコードをテストしませんでしたが、1つの問題は接続に関連しています。接続は信号を発信する前に行う必要があります。

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

へ:

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

私は、何もまだ、試した私は、テーブルに指定された行をクリックしたとき、それはまだlabel_2をzobraz.cppするために行番号をint型の変数を送信doesntの。 コンパイルされていますが、接続が機能しません。変数 "indexx"は変数 "o"と同じではありません – user2859429

+0

申し訳ありません。あなたのコードをデバッグするには "qDebug()<<"関数を追加しようとします。 on_tableView_doubleClickedが呼び出されたかどうかを確認します。 – aldo85ita

0

問題がsetintdataでVASですから、これらの行を変更する必要があります。それはこのように見えるはずです。しかし、なぜIDK。

void zobraz::setIntData(int data) 
{ 

    QString poradieee=QString::number(data+1); 
    ui->label_2->setText(poradieee); 

    indexx=data; 

} 
+0

'indexx = data;'を呼び出すと、 'indexx'の内容だけが更新されるためです。変数に新しい値を割り当てるため、ラベルが更新される理由はありません。 – SGaist

関連する問題