QTableWidget mit zwei Dialogen

Alles rund um die Programmierung mit Qt
Antworten
AQtNewbie
Beiträge: 23
Registriert: 1. Oktober 2012 13:03

QTableWidget mit zwei Dialogen

Beitrag von AQtNewbie »

Hallo!

Ich habe folgende Situation: Es gibt einen Dialog customerDlg und createCustomer.
customerDlg ist der "übergeordnete" Dialog. In diesem Dialog habe ich die Option: "Kunden anlegen".
Nun wird der Dialog createCustomer angezeigt, in welchem ich ID, Name, usw. eingeben kann.
Nun möchte ich in diesem Dialog createCustomer ein QTableWidgetItem mit eben ID, Name, usw. (pro Item eine neue Zeile, Name = 1. Spalte, ID = 2. Spalte, usw.) und dem QTableWidget, dass sich im "übergeordneten" Dialog customerDlg befindet, zur Anzeige "übergeben", wenn der Button "Erstellen" (und die damit verbundene Methode create();) im createCustomer - Dialog betätigt wird. Der Dialog createCustomer hat nur zwei Buttons: create und abort, und schließt sich bei erfolgreichem Einfügens des Items.

Meine beiden Fragen hierzu:
Habe ich erst einmal konzeptionell richtig gedacht?
Wie kann ich innerhalb des einen Dialogs ein Item erstellen und es dem anderen Dialog zur Anzeige "übergeben"?

Hier wäre ein Ausschnitt des bisherigen Codes, in welchem es natürlich noch vieles anderes zu tun gibt:

Code: Alles auswählen

#include "customerdlg.h"
#include "createcustomer.h"
#include "ui_createcustomer.h"

createCustomer::createCustomer(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::createCustomer)
{
    ui->setupUi(this);
    QObject::connect(ui->createButton, SIGNAL(clicked()), this, SLOT (create()));
    QObject::connect(ui->abortButton, SIGNAL(clicked()), this, SLOT(close()));
}

createCustomer::~createCustomer()
{
    delete ui;
}

void createCustomer::create()
{
    //get newCustomer
    QString newID = ui->lineEdit->text();
    //to-do

    //create new QTableItem:newCustomer
    QTableWidgetItem *newCustomer = new QTableWidgetItem;
    newCustomer->setCheckState(Qt::Unchecked);
    newCustomer->setFlags(newItem->flags() | Qt::ItemIsUserCheckable);
    newCustomer->setText(newID);
    //to-do (row, collums, ..)
    
    //insert newItem into tableWiget (customerDlg)
    //to-do 
    
    //close createCustomer dialog when item is successfully created
    if (/*item is inserted*/)
    {
        createCustomer::close();
    }
    else
    {
        //QMessageBox : e.g. missing an attribute of newCustomer
    }
}
Antworten