Пересылка текста из одной формы в таблицу другой
Только начал рассматривать qt, нам дали архив с проектом, моя задача была в том, чтобы сделать добавление подразделов по кнопке в отдельной форме, доп.форму сделал, кнопку тоже, но не пойму как передавать значение из поля addEdit в столбец главной формы подраздел.

По нажатию на кнопку добавить подраздел открывается форма Dobavlenie
void MainWindow::on_pushButton_clicked()
{
dob = new Dobavlenie(this);
dob->show();
}
В этой форме по нажатию на кнопку OK текст введенный в поле должен записаться в столбец подразделение из главной формы.
void Dobavlenie::on_buttonBox_rejected()
{
close();
}
void Dobavlenie::on_buttonBox_accepted()
{
ui->addEdit->text();
close();
}
В главной форме есть метод создания таблицы, соответственно, думаю работать нужно с ним:
void MainWindow::addToTable(CWorker *wr)
{
ui->TableWidget->setRowCount(ui->TableWidget->rowCount() + 1);
QTableWidgetItem *newItem;
newItem = new QTableWidgetItem();
newItem->setText(wr->GetLastName());
ui->TableWidget->setItem(ui->TableWidget->rowCount() - 1, 0, newItem);
newItem = new QTableWidgetItem();
newItem->setText(wr->GetFirstName());
ui->TableWidget->setItem(ui->TableWidget->rowCount() - 1, 1, newItem);
newItem = new QTableWidgetItem();
newItem->setText(wr->GetMiddleName());
ui->TableWidget->setItem(ui->TableWidget->rowCount() - 1, 2, newItem);
newItem = new QTableWidgetItem();
newItem->setText(QString::number(wr->GetAccountNumber()));
ui->TableWidget->setItem(ui->TableWidget->rowCount() - 1, 3, newItem);
newItem = new QTableWidgetItem();
newItem->setText(wr->GetSubDivision());
ui->TableWidget->setItem(ui->TableWidget->rowCount() - 1, 4, newItem);
newItem = new QTableWidgetItem();
newItem->setText(wr->GetPosition());
ui->TableWidget->setItem(ui->TableWidget->rowCount() - 1, 5, newItem);
newItem = new QTableWidgetItem();
newItem->setText(wr->GetWorkExperience());
ui->TableWidget->setItem(ui->TableWidget->rowCount() - 1, 6, newItem);
}
Ответы (1 шт):
Добавьте в Dobavlenie сигнал:
class Dobavlenie : public QWidget {
Q_OBJECT
signals:
void sectionText(QString text);
...
И тогда в методе обработки клика эмитируйте его:
void Dobavlenie::on_buttonBox_accepted()
{
emit sectionText(ui->addText->text());
close();
}
Теперь вы можете отлавливать этот сигнал:
void MainWindow::on_pushButton_clicked()
{
dob = new Dobavlenie(this); // Где-то надо указатель удалить. Гемор? Гемор. Идем дальше
connect(dob, &Dobavlenie::sectionText, [&](QString text) {
// Добавить text в таблицу
});
dob->show();
}
НО! Лучше наследуйте Dobavlenie от QDialog и тогда ваш код существенно упростится и сократится:
// Создайте его через редактор с двумя кнопками
class Dobavlenie: public QDialog {
...
public:
QString text() const {
return ui->addText->text();
}
}
И тогда:
void MainWindow::on_pushButton_clicked()
{
Dobavlenie dialog;
if (dialog.exec() == QDialog::Accepted) {
QString sectionText = dialog.text();
//...
}
}
