c++ - QTabWidget tab displays nothing in one of the tabs -
i trying create gui has qtabwidget multiple tabs. preliminary test have created 1 has 2 tabs using same layouts. first tab (page 1) blank second 1 shows qtableview created. both tabs created exact same way, yet perform differently. know why first 1 blank...?
i noticed if comment out line int8window->setlayout(_layout);. page 1 shows proper layout , second tab blank time...
here code gui:
// main window , layout qwidget* mainwindow = new qwidget; qvboxlayout *mainlayout = new qvboxlayout; // tab widget qtabwidget* tabwidget = new qtabwidget; // pages in tab widget qwidget* uint8window = new qwidget; uint8window->setwindowtitle(qstring("page 1")); qwidget* int8window = new qwidget; int8window->setwindowtitle(qstring("page 2")); qtableview* tableview = new qtableview; qstandarditemmodel* model = new qstandarditemmodel(5, 5); (int row = 0; row < 5; ++row) { model->setitem(row, 0, new qstandarditem("3")); model->setitem(row, 1, new qstandarditem(5)); model->setitem(row, 2, new qstandarditem(2)); model->setitem(row, 3, new qstandarditem(1)); model->setitem(row, 4, new qstandarditem(5)); } tableview->setmodel(model); // setting tab page layouts _layout = new qvboxlayout; _layout->addwidget(tableview); uint8window->setlayout(_layout); int8window->setlayout(_layout); // add pages tab widget tabwidget->addtab(uint8window, "page 1"); tabwidget->addtab(int8window, "page 2"); // add tab widget main layout , show mainlayout->addwidget(tabwidget); mainwindow->setlayout(mainlayout); mainwindow->show();
read logs! i'm sure have respective warning.
you assigning same layout 2 different widgets. once layout assigned widget, owned widget forever.
you need create separate layout each widget.
i recommend split onto couple methods. 1 creating widget page (you can use couple times). other creating data model, , other composing tab widget.
please remember memory management! best approach set parent during construction (as parameter of constructor). have leak in data model.
Comments
Post a Comment