delete default layout in MotifEditor
authorDiane Trout <diane@caltech.edu>
Tue, 3 Apr 2007 23:38:24 +0000 (23:38 +0000)
committerDiane Trout <diane@caltech.edu>
Tue, 3 Apr 2007 23:38:24 +0000 (23:38 +0000)
Qt was generating warning messages about couldn't set layout
on the MotifEditor while one was already set. It turns out you
need to delete the default layout before calling setLayout().

qui/motif_editor/MotifEditor.cpp

index acde2d3af74c8a756bb9e05f4855748215f69138..fec73f786d19138b2f3ee250723a80b2a905cd54 100644 (file)
@@ -21,17 +21,6 @@ MotifEditor::MotifEditor(MussaRef m, QWidget *parent)
   assert (m != 0);
   const set<Sequence> &motif = analysis->motifs();
   vector<Sequence> motif_seq(motif.begin(), motif.end());
-
-  applyButton->setFocusPolicy(Qt::StrongFocus);
-  connect(applyButton, SIGNAL(clicked()), this, SLOT(updateAnalysisMotifs()));
-  button_layout->addStretch();
-  button_layout->addWidget(applyButton);
-  
-  table->setItemDelegate(delegate);
-
-  editor_layout->addWidget(table);
-  editor_layout->addLayout(button_layout);
-  setLayout(editor_layout);
   
   updateTitle();
   updateModel();
@@ -39,11 +28,25 @@ MotifEditor::MotifEditor(MussaRef m, QWidget *parent)
 
 void MotifEditor::setupWidgets()
 {
-  editor_layout = new QVBoxLayout(this);
-  button_layout = new QHBoxLayout(this);
-  table = new QTableView(this);
+  editor_layout = new QVBoxLayout;
+  button_layout = new QHBoxLayout;
+  // remove default layout (very safely) 
+  if (layout()) delete layout();
+  
+  table = new QTableView;
   delegate = new MotifEditorDelegate(this);
   applyButton = new QPushButton("apply");
+
+  applyButton->setFocusPolicy(Qt::StrongFocus);
+  connect(applyButton, SIGNAL(clicked()), this, SLOT(updateAnalysisMotifs()));
+  button_layout->addStretch();
+  button_layout->addWidget(applyButton);
+
+  table->setItemDelegate(delegate);
+  
+  editor_layout->addWidget(table);
+  editor_layout->addLayout(button_layout);
+  setLayout(editor_layout);
 }
 
 void MotifEditor::updateModel()