Machen Sie ein Signal nur dann aus, wenn eine aktualisierte Zeile an die Datenbank übermittelt wirdC++

Programme in C++. Entwicklerforum
Anonymous
 Machen Sie ein Signal nur dann aus, wenn eine aktualisierte Zeile an die Datenbank übermittelt wird

Post by Anonymous »

In meiner QT 6.8.2 -Desktop -Anwendung muss ich die Onrowchange Strategie für einen QSQLRelationalTablemodel verwenden, da es sich um eine Entwurfsbeschränkung für die UX handelt. Um die Benutzeroberfläche konsistent und mit allen Tabellen zu synchronisieren, ist es obligatorisch zu wissen, wann eine Zeile in der Datenbank tatsächlich aktualisiert wird. Hier meine eigene Unterklasse des QSQLRelationalTablemodel :

Code: Select all

#include 

class TableModel : public QSqlRelationalTableModel
{
Q_OBJECT

public:
explicit TableModel(QObject *parent = nullptr, const QSqlDatabase &db = QSqlDatabase()) : QSqlRelationalTableModel(parent, db)
{
}

public slots:
bool submit() override
{
bool ret = QSqlRelationalTableModel::submit();
if (ret) emit rowSubmitted();
return ret;
}

signals:
void rowSubmitted();
};
Dieser Code löste das Problem, das ich in der verknüpften Frage hatte, aber die Entwicklung habe die Funktion von Subschritt () als an jedem Zeit bezeichnet, an dem der Benutzer eine Zeile ändert, egal ob er im Modell tatsächlich etwas im Modell geändert hat! Also habe ich versucht, diese Zeile in: < /p>
zu ändern

Code: Select all

if (ret && isDirty()) emit rowSubmitted();
Aber in diesem Fall ist das Signal niemals emittiert, auch kurz nach der Bearbeitung einer Zeile. Ich denke, weil das Modell zu diesem Zeitpunkt bereits aktualisiert wurde. rowsUbmuped () Signal Nur Wenn eine Zeile wirklich in die Datenbank übermittelt wird?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post