February 7, 2012

gonzomcgraw gonzomcgraw
Lab Rat
10 posts

[solved] QTableview in Plugin wird nicht upgedatet

 

Hallo Miteinander!

versuche gerade seit 3 Tagen eine Model/View Implementierung innerhalb eines Plugins ans laufen zu bringen, aber klappt nicht – data wird nicht angesprungen :S

Projekt: einlesen einer csv-Datei und darstellen der Werte in einer Tabelle.

Ich habe das Demo CdRack (http://developer.qt.nokia.com/groups/qt_german/wiki/Model_View_Tutorial) dazu hergenommen. Wenn ich meine Klassen darin implementiere klappt es. Hab das ganze auch in den Qt Creator portiert wg der ui. Auch dort klappt das update, nachdem ich die Daten eingelesen habe.

Ok, zu meiner Implementierung im Plugin:

  1. PluginDialog::PluginDialog(QWidget *parent, QString parent_id)
  2.     : QMainWindow(parent)
  3. {
  4.     ui.setupUi(this);
  5.          :
  6.          :
  7.     m_model = new VdOblModel(m_data, this);
  8.     ui.m_view->setModel(m_model);
  9.     ui.m_view->setAlternatingRowColors(true);
  10.  
  11.     connect(&m_data, SIGNAL(contentsChanged()), this, SLOT(documentWasModified()));

Sieht im funktionierenden Qt Creator CdRack genauso aus:

  1. MainWindow::MainWindow(QWidget *parent) :
  2.     QMainWindow(parent),
  3.     ui(new Ui::MainWindow)
  4. {
  5.     ui->setupUi(this);
  6.          :
  7.          :
  8.     m_model = new VdOblModel(m_data, this);
  9.     ui->m_view->setModel(m_model);
  10.     ui->m_view->setAlternatingRowColors(true);
  11.  
  12.     connect(&m_data, SIGNAL(contentsChanged()), this, SLOT(documentWasModified()));

Wenn ich debugge, werden die Daten in beiden Fällen in meinen Datencontainer geschrieben. Aber nur in der CdRack-Version landet man in der data-funktion des Models.

Um Unterschiede auszuschließen, verwende ich die gleichen Files für das Model, den controller und den Datencontainer in beiden Projekten.

Mir kommt es so vor, als ob das Model das Signal fürs data nicht bekommt, weil es am falschen Objekt lauscht. Ist im Plugin das Parent ein anderes wie im CdRack?

Bin echt am verzweifeln ;( … Hoffe, mir kann jemand weiterhelfen … Wär suuper!

Grüße,
Thomas

1 reply

February 7, 2012

gonzomcgraw gonzomcgraw
Lab Rat
10 posts

Hi,

Problem gefunden … ein saudummer Anfänger-Fehler …

Das ganze hing damit zusammen, dass ich beim laden der csv-Datei ein zweites Controller-Objekt aufgerufen habe, was den Dateipfad dem Plugin bekannt gab. Das hat das einlesen gemacht und den emit gesendet. Da aber das Model auf das andere Controller-Objekt gehört hat, konnte nie ein update der Table gemacht werden …

Naja … aber die 3 Tage waren wenigstens nicht umsonst … hab dadurch das Model/View-Konzept recht gut verstanden ;)

Grüße,
Thomas

 
  ‹‹ Wie jpg in Visual Studio 2010 einbinden?      Multi-Touch Gesten mit QWS ››

You must log in to post a reply. Not a member yet? Register here!