Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Polish
  4. Odwołanie sie do obiekty z innej klasy

Odwołanie sie do obiekty z innej klasy

Scheduled Pinned Locked Moved Solved Polish
2 Posts 2 Posters 897 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    Lukasz125
    wrote on last edited by Lukasz125
    #1

    Witam pisze program do zarządzania próbkami. ```
    void MainWindow::readFile(QString fileName)
    {

    ui->tableWidget->setColumnCount(7);
    ui->tableWidget->setSelectionMode(QAbstractItemView::MultiSelection);
    QStringList header;
    header << "Zaznacz" << "Nr. kartonu" << "Typ uszczelki" << "Średnica" << "Grubość" << "Gestość" << "Uwagi";
    ui->tableWidget->setHorizontalHeaderLabels(header);
    
    QFile file (fileName);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
       qDebug()<<"File Open Failed" ;
    }
    
    QTextStream in(&file);
    
    QList <QString> vector;
    
    int rowCount = 0;
    
    while(!in.atEnd())
    

    {
    QString line =in.readLine();
    vector.append(line.split(","));
    ui->tableWidget->insertRow(rowCount);

    QTableWidgetItem *select = new QTableWidgetItem;
    QTableWidgetItem *nr_kartonu = new QTableWidgetItem;
    QTableWidgetItem *typ_uszczelki = new QTableWidgetItem;
    QTableWidgetItem *srednica = new QTableWidgetItem;
    QTableWidgetItem *grubosc = new QTableWidgetItem;
    QTableWidgetItem *gestosc = new QTableWidgetItem;
    QTableWidgetItem *uwagi = new QTableWidgetItem;
    
    
    select->setCheckState(Qt::Unchecked);
    nr_kartonu->setText(vector[rowCount*6]);
    typ_uszczelki->setText(vector[(rowCount*6)+1]);
    srednica->setText(vector[(rowCount*6)+2]);
    grubosc->setText(vector[(rowCount*6)+3]);
    gestosc->setText(vector[(rowCount*6)+4]);
    uwagi->setText(vector[(rowCount*6)+5]);
    
    
    
    ui->tableWidget->setItem(rowCount,0,select);
    ui->tableWidget->setItem(rowCount,1,nr_kartonu);
    ui->tableWidget->setItem(rowCount,2,typ_uszczelki);
    ui->tableWidget->setItem(rowCount,3,srednica);
    ui->tableWidget->setItem(rowCount,4,grubosc);
    ui->tableWidget->setItem(rowCount,5,gestosc);
    ui->tableWidget->setItem(rowCount,6,uwagi);
    
    rowCount++;
    
    }
    file.flush();
    file.close();
    

    }

    
    Tworze tabele i pobieram dane z pliku
    
    Sworzyłem QDialog z TextEdit z którego w którym urzytkownik wpisuje szukane wartosci.
    
    
    
    void Szukaj::on_buttonBox_accepted()
    {
        QString wynik;
        QString rodzaj = ui->comboBox->currentText();
        QString srednica = ui->lineEdit->text();
        QString grubosc = ui->lineEdit_2->text();
        QString gestosc = ui->lineEdit_3->text();
    
        MainWindow q;
        q.pokaz(srednica);
    
    }
    

    i chciałym po kliknieciu "OK" wywyołać w tabeli funkcję

    void MainWindow::pokaz(QString srednica)
    {
    
        int rows = ui->tableWidget->rowCount();
        for(int i = 0; i < rows; i++)
        {
            if(ui->tableWidget->item(i, 2)->text() == srednica) //&& ui->tableWidget->item(i, 3)->text() == srednica)
            {
                ui->tableWidget->selectRow(i);
    
            }
        }
    }
    

    Tylko nie wiem jak dostać sie do obiektu utworzonego innej klasie.

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #2

      Ten QDialog musi być utworzony gdzieś. Możesz to zrobić w swoim głównym oknie, wtedy komunikacja będzie prosta. Np.:

      void MainWindow::showDialog() 
      {
        auto dialog = new Szukaj(this);
        connect(dialog, &QDialog::accepted, this, [=]() {
          pokaz(dialog->srednica());
          dialog->hide();
          dialog->deleteLater();
        });
        dialog->show();
      }
      

      Parę innych uwag:

      • teksty widoczne dla użytkowników powinny być opięte w funkcje tłumaczące: tr("Typ uszczelki")
      • przekazując QString (i wszelkie inne "duże" klasy z Qt) do funkcji, używaj const ref: void MainWindow::pokaz(const QString &srednica)
      • polecam programować wyłącznie po angielsku, takie mieszanie języków jest dość mylące. No i nie do użycia w międzynarodowej drużynie
      • ten kod zdecydowanie wyrzuć:
      MainWindow q;
      q.pokaz(srednica);
      

      Bo on tworzy nowe okno MainWindow, a tego raczej nie chcesz.

      (Z(:^

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved